diff --git a/src/p_lx_elf.cpp b/src/p_lx_elf.cpp index 93334941..063aae33 100644 --- a/src/p_lx_elf.cpp +++ b/src/p_lx_elf.cpp @@ -8618,7 +8618,7 @@ void PackLinuxElf32::unpack(OutputFile *fo) } } int boff = find_le32(peek_arr, sizeof(peek_arr), size); - if (boff < 0) { + if (boff < 0 || sizeof(peek_arr) < (sizeof(*bp) + boff)) { throwCantUnpack("b_info corrupted"); } bp = (b_info *)(void *)&peek_arr[boff];