diff options
-rw-r--r-- | apf_run.c | 17 |
1 files changed, 11 insertions, 6 deletions
@@ -365,14 +365,19 @@ int main(int argc, char* argv[]) { } // Combine the program and data into the unified APF buffer. + uint32_t ram_len = program_len + data_len; + if (use_apf_v6_interpreter) { + ram_len += 3; + ram_len &= ~3; + if (data_len < 20) ram_len += 20; + } + if (data) { - program = realloc(program, program_len + data_len); - memcpy(program + program_len, data, data_len); + program = realloc(program, ram_len); + memcpy(program + ram_len - data_len, data, data_len); free(data); } - uint32_t ram_len = program_len + data_len; - if (filename) file_handler(use_apf_v6_interpreter, program, program_len, ram_len, filename, filter_age); @@ -382,11 +387,11 @@ int main(int argc, char* argv[]) { if (data_len) { printf("Data: "); - print_hex(program + program_len, data_len); + print_hex(program + ram_len - data_len, data_len); printf("\n"); if (print_counter_enabled) { printf("APF packet counters: \n"); - print_counter(program + program_len, data_len); + print_counter(program + ram_len - data_len, data_len); } } |