aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2020-10-28 11:07:02 +0000
committerNick Clifton <nickc@redhat.com>2020-10-28 11:07:02 +0000
commit2aec1123f9ec86cd190767c9852cb77ed2c017ec (patch)
treedb8cbda501bce4940dd4410c493bd28577e565f4
parentec3f28df02b6a59be3cfd226e5f653221c10f7ee (diff)
downloadfsf-binutils-gdb-2aec1123f9ec86cd190767c9852cb77ed2c017ec.zip
fsf-binutils-gdb-2aec1123f9ec86cd190767c9852cb77ed2c017ec.tar.gz
fsf-binutils-gdb-2aec1123f9ec86cd190767c9852cb77ed2c017ec.tar.bz2
Fix a potential illegal memory access when creating an srec format file.
PR 26774 * srec.c (srec_write_symbols): Do not emit symbols in sections that have been removed from the output.
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/srec.c5
2 files changed, 10 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index d93b27b..30bd85d 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2020-10-28 Nick Clifton <nickc@redhat.com>
+
+ PR 26774
+ * srec.c (srec_write_symbols): Do not emit symbols in sections
+ that have been removed from the output.
+
2020-10-27 Nick Clifton <nickc@redhat.com>
* elf64-hppa.c (elf_hppa_final_link_relocate): Check that the
diff --git a/bfd/srec.c b/bfd/srec.c
index ef7eb43..6cbe330 100644
--- a/bfd/srec.c
+++ b/bfd/srec.c
@@ -1085,8 +1085,11 @@ srec_write_symbols (bfd *abfd)
for (i = 0; i < count; i++)
{
asymbol *s = table[i];
+
if (! bfd_is_local_label (abfd, s)
- && (s->flags & BSF_DEBUGGING) == 0)
+ && (s->flags & BSF_DEBUGGING) == 0
+ && s->section != NULL
+ && s->section->output_section != NULL)
{
/* Just dump out non debug symbols. */
char buf[43], *p;