From 5d295c24f019caae9f0cd8de4b67c237f2a39f56 Mon Sep 17 00:00:00 2001 From: John Reiser Date: Tue, 26 Nov 2019 19:33:27 -0800 Subject: [PATCH] DT_NEEDED can be duplicated modified: p_lx_elf.cpp --- src/p_lx_elf.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/p_lx_elf.cpp b/src/p_lx_elf.cpp index 52a0cb14..bfbe536a 100644 --- a/src/p_lx_elf.cpp +++ b/src/p_lx_elf.cpp @@ -1574,7 +1574,8 @@ PackLinuxElf32::invert_pt_dynamic(Elf32_Dyn const *dynp) for (; ; ++ndx, ++dynp) { unsigned const d_tag = get_te32(&dynp->d_tag); if (d_tag < DT_NUM) { - if (dt_table[d_tag] + if (Elf32_Dyn::DT_NEEDED != d_tag + && dt_table[d_tag] && get_te32(&dynp->d_val) != get_te32(&dynp0[-1+ dt_table[d_tag]].d_val)) { char msg[50]; snprintf(msg, sizeof(msg), @@ -5029,7 +5030,8 @@ PackLinuxElf64::invert_pt_dynamic(Elf64_Dyn const *dynp) throwCantPack(msg); } if (d_tag < DT_NUM) { - if (dt_table[d_tag] + if (Elf64_Dyn::DT_NEEDED != d_tag + && dt_table[d_tag] && get_te64(&dynp->d_val) != get_te64(&dynp0[-1+ dt_table[d_tag]].d_val)) { char msg[50]; snprintf(msg, sizeof(msg),