aboutsummaryrefslogtreecommitdiff
path: root/bfd/coffgen.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2023-03-22 09:05:10 +1030
committerAlan Modra <amodra@gmail.com>2023-03-22 09:05:10 +1030
commit317e47ee5e7c539807d6cd16bde5c274025e8ee1 (patch)
tree1ebf34e3ff4a4c5697d33c7fef6227fe0c3d32ae /bfd/coffgen.c
parent6634b215662aa856c8df9ee0e56c0a2f7ad3684e (diff)
downloadgdb-317e47ee5e7c539807d6cd16bde5c274025e8ee1.zip
gdb-317e47ee5e7c539807d6cd16bde5c274025e8ee1.tar.gz
gdb-317e47ee5e7c539807d6cd16bde5c274025e8ee1.tar.bz2
PR17910 sym string offset check
As far as I can see the only place that sets obj_coff_strings without setting obj_coff_strings_len is pe_ILF_build_a_bfd. Fix that and we can simplify the sym string offset check. This is just a tidy. pe_ILF_build_a_bfd doesn't create bad symbols and _bfd_coff_read_string_table will always result in non-zero obj_coff_strings_len when obj_coff_strings is non-NULL. PR 17910 * coffgen.c (_bfd_coff_internal_syment_name): Always sanity check sym string offset. * peicode.h (pe_ILF_build_a_bfd): Set obj_coff_strings_len.
Diffstat (limited to 'bfd/coffgen.c')
-rw-r--r--bfd/coffgen.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/bfd/coffgen.c b/bfd/coffgen.c
index f21cf2c..774edf7 100644
--- a/bfd/coffgen.c
+++ b/bfd/coffgen.c
@@ -443,10 +443,7 @@ _bfd_coff_internal_syment_name (bfd *abfd,
if (strings == NULL)
return NULL;
}
- /* PR 17910: Only check for string overflow if the length has been set.
- Some DLLs, eg those produced by Visual Studio, may not set the length field. */
- if (obj_coff_strings_len (abfd) > 0
- && sym->_n._n_n._n_offset >= obj_coff_strings_len (abfd))
+ if (sym->_n._n_n._n_offset >= obj_coff_strings_len (abfd))
return NULL;
return strings + sym->_n._n_n._n_offset;
}