ujail: DT_STRTAB uses d_ptr in d_un union (not d_val)
authorEtienne CHAMPETIER <champetier.etienne@gmail.com>
Fri, 27 Nov 2015 16:27:13 +0000 (16:27 +0000)
committerJohn Crispin <blogic@openwrt.org>
Fri, 27 Nov 2015 16:48:49 +0000 (17:48 +0100)
see
https://docs.oracle.com/cd/E19683-01/817-3677/chapter6-42444/index.html

Signed-off-by: Etienne CHAMPETIER <champetier.etienne@gmail.com>
jail/elf.c

index 7c52880..46c19df 100644 (file)
@@ -182,7 +182,7 @@ static int elf32_scan_dynamic(const char *map, int dyn_offset, int dyn_size, int
                if (curr->d_tag != DT_STRTAB)
                        continue;
 
                if (curr->d_tag != DT_STRTAB)
                        continue;
 
-               strtab = map + (curr->d_un.d_val - load_offset);
+               strtab = map + (curr->d_un.d_ptr - load_offset);
                break;
        }
 
                break;
        }
 
@@ -216,7 +216,7 @@ static int elf64_scan_dynamic(const char *map, int dyn_offset, int dyn_size, int
                if (curr->d_tag != DT_STRTAB)
                        continue;
 
                if (curr->d_tag != DT_STRTAB)
                        continue;
 
-               strtab = map + (curr->d_un.d_val - load_offset);
+               strtab = map + (curr->d_un.d_ptr - load_offset);
                break;
        }
 
                break;
        }