bfd/mach-o: avoid a crash when num == 0 in reloc.
authorTristan Gingold <tristan.gingold@adacore.com>
Tue, 1 Apr 2014 12:34:04 +0000 (14:34 +0200)
committerTristan Gingold <tristan.gingold@adacore.com>
Tue, 1 Apr 2014 12:34:04 +0000 (14:34 +0200)
bfd/
* mach-o.c (bfd_mach_o_canonicalize_one_reloc): Avoid to crash
when num == 0.

bfd/ChangeLog
bfd/mach-o.c

index badd4c925e99232223c8a1be6922b14f61887d48..442f8ada4800cbc2815fd9a19119cf62a708abeb 100644 (file)
@@ -1,3 +1,8 @@
+2014-04-01  Tristan Gingold  <gingold@adacore.com>
+
+       * mach-o.c (bfd_mach_o_canonicalize_one_reloc): Avoid to crash
+       when num == 0.
+
 2014-03-27  Yury Gribov  <y.gribov@samsung.com>
            Pavel Fedin  <p.fedin@samsung.com>
 
index ebaa6c7852a9ac59104a76f901905ccd7fd53889..e33c01f1e4ac64c632248af695c4d37a278d46a2 100644 (file)
@@ -1075,7 +1075,7 @@ bfd_mach_o_canonicalize_one_reloc (bfd *abfd,
          /* An external symbol number.  */
          sym = syms + num;
        }
-      else if (num == 0x00ffffff)
+      else if (num == 0x00ffffff || num == 0)
        {
          /* The 'symnum' in a non-scattered PAIR is 0x00ffffff.  But as this
             is generic code, we don't know wether this is really a PAIR.
@@ -1087,7 +1087,6 @@ bfd_mach_o_canonicalize_one_reloc (bfd *abfd,
       else
         {
          /* A section number.  */
-          BFD_ASSERT (num != 0);
           BFD_ASSERT (num <= mdata->nsects);
 
           sym = mdata->sections[num - 1]->bfdsection->symbol_ptr_ptr;