From 3ff8b3e2532fed69917a7a91cb5347f50a412f45 Mon Sep 17 00:00:00 2001 From: ty Date: Mon, 7 Nov 2022 09:54:23 +0800 Subject: [PATCH] procd: ujail static-linked binary (#10381) ref: openwrt/openwrt#10933 --- .../001-procd_ujail_static_binary_fix.patch | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 package/system/procd/patches/001-procd_ujail_static_binary_fix.patch diff --git a/package/system/procd/patches/001-procd_ujail_static_binary_fix.patch b/package/system/procd/patches/001-procd_ujail_static_binary_fix.patch new file mode 100644 index 000000000..d0484b15f --- /dev/null +++ b/package/system/procd/patches/001-procd_ujail_static_binary_fix.patch @@ -0,0 +1,29 @@ +--- a/jail/elf.c ++++ b/jail/elf.c +@@ -240,18 +240,18 @@ int elf_load_deps(const char *path, cons + + gcc_mips64_bug_work_around = 1; + #endif +- if (elf_find_section(map, PT_LOAD, &load_offset, NULL, &load_vaddr)) { +- ERROR("failed to load the .load section from %s\n", path); +- return -1; ++ if (elf_find_section(map, PT_INTERP, &interp_offset, NULL, NULL) == 0) { ++ add_path_and_deps(map+interp_offset, 1, -1, 0); + } + +- if (elf_find_section(map, PT_DYNAMIC, &dyn_offset, &dyn_size, NULL)) { +- ERROR("failed to load the .dynamic section from %s\n", path); +- return -1; ++ if (elf_find_section(map, PT_LOAD, &load_offset, NULL, &load_vaddr)) { ++ DEBUG("failed to load the .load section from %s\n", path); ++ return 0; + } + +- if (elf_find_section(map, PT_INTERP, &interp_offset, NULL, NULL) == 0) { +- add_path_and_deps(map+interp_offset, 1, -1, 0); ++ if (elf_find_section(map, PT_DYNAMIC, &dyn_offset, &dyn_size, NULL)) { ++ DEBUG("failed to load the .dynamic section from %s\n", path); ++ return 0; + } + + int clazz = map[EI_CLASS];