[OpenWrt-Devel] [PATCH procd v2 17/17] ujail: add ELF interpreter (DT_INTERP) to the jail

Etienne CHAMPETIER champetier.etienne at gmail.com
Wed Nov 25 12:54:50 EST 2015


this is needed by musl (openwrt DD)
uClibc/glibc is working without this

this partly fixes
https://dev.openwrt.org/ticket/20785

we still don't handle DT_RPATH, DT_RUNPATH, nodeflib, ...
see http://man7.org/linux/man-pages/man8/ld.so.8.html

Signed-off-by: Etienne CHAMPETIER <champetier.etienne at gmail.com>
---
 jail/elf.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/jail/elf.c b/jail/elf.c
index 136789e..b8f2cc5 100644
--- a/jail/elf.c
+++ b/jail/elf.c
@@ -234,6 +234,7 @@ int elf_load_deps(const char *path, const char *map)
 {
 	unsigned int dyn_offset, dyn_size;
 	unsigned int load_offset, load_vaddr;
+	unsigned int interp_offset;
 
 	if (elf_find_section(map, PT_LOAD, &load_offset, NULL, &load_vaddr)) {
 		ERROR("failed to load the .load section from %s\n", path);
@@ -245,6 +246,10 @@ int elf_load_deps(const char *path, const char *map)
 		return -1;
 	}
 
+	if (elf_find_section(map, PT_INTERP, &interp_offset, NULL, NULL) == 0) {
+		add_path_and_deps(map+interp_offset, 1, -1, 0);
+	}
+
 	int clazz = map[EI_CLASS];
 
 	if (clazz == ELFCLASS32)
-- 
1.9.1
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list