Fix an illegal memory access parsing a win32pstatus note with a type of 0.
authorNick Clifton <nickc@redhat.com>
Thu, 14 Jan 2021 09:15:13 +0000 (09:15 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 14 Jan 2021 09:15:13 +0000 (09:15 +0000)
* elf.c (elfcore_grok_win32pstatus): Check for a note type of 0.

bfd/ChangeLog
bfd/elf.c

index 330b0d7af47ab62454a0c9c5594ce3b787cf4056..7f1b720b94f7c365855e347675d67d7878b0d8ac 100644 (file)
@@ -1,3 +1,7 @@
+2021-01-14  Nick Clifton  <nickc@redhat.com>
+
+       * elf.c (elfcore_grok_win32pstatus): Check for a note type of 0.
+
 2021-01-13  Alan Modra  <amodra@gmail.com>
 
        * Makefile.in: Regenerate.
index ab19bdb4530b0e8ac5c74feda3dd1faf5580decc..84a5d942817a9a54b1170fbbb594787c5839aa54 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -10163,7 +10163,8 @@ elfcore_grok_win32pstatus (bfd *abfd, Elf_Internal_Note *note)
 
   type = bfd_get_32 (abfd, note->descdata);
 
-  struct {
+  struct
+  {
     const char *type_name;
     unsigned long min_size;
   } size_check[] =
@@ -10174,7 +10175,7 @@ elfcore_grok_win32pstatus (bfd *abfd, Elf_Internal_Note *note)
        { "NOTE_INFO_MODULE64", 16 },
       };
 
-  if (type > (sizeof(size_check)/sizeof(size_check[0])))
+  if (type == 0 || type > (sizeof(size_check)/sizeof(size_check[0])))
       return TRUE;
 
   if (note->descsz < size_check[type - 1].min_size)