1 --- PRoot-5.1.0/src/execve/enter.c 2014-12-15 15:18:11.000000000 +0100
2 +++ src/src/execve/enter.c 2016-03-20 12:05:08.013426156 +0100
6 extern unsigned char _binary_loader_exe_start;
7 -extern unsigned char _binary_loader_exe_size;
8 +extern unsigned char _binary_loader_exe_end;
10 extern unsigned char WEAK _binary_loader_m32_exe_start;
11 -extern unsigned char WEAK _binary_loader_m32_exe_size;
12 +extern unsigned char WEAK _binary_loader_m32_exe_end;
15 * Extract the built-in loader. This function returns NULL if an
18 if (wants_32bit_version) {
19 start = (void *) &_binary_loader_m32_exe_start;
20 - size = (size_t) &_binary_loader_m32_exe_size;
21 + size = (size_t) (&_binary_loader_m32_exe_end - &_binary_loader_m32_exe_start);
24 start = (void *) &_binary_loader_exe_start;
25 - size = (size_t) &_binary_loader_exe_size;
26 + size = (size_t) (&_binary_loader_exe_end - &_binary_loader_exe_start);
29 status2 = write(fd, start, size);
32 /* An ELF interpreter is supposed to be
34 - if (tracee->load_info->interp->interp != NULL)
36 + if (tracee->load_info->interp->interp != NULL) {
37 + TALLOC_FREE(tracee->load_info->interp->interp);
38 + // TODO: Print warning?
42 compute_load_addresses(tracee);