OSDN Git Service

* vms-gsd.c (_bfd_vms_write_gsd): Check that symbol->udata.p is
authoramodra <amodra>
Tue, 5 Nov 2002 01:08:17 +0000 (01:08 +0000)
committeramodra <amodra>
Tue, 5 Nov 2002 01:08:17 +0000 (01:08 +0000)
non-NULL before dereferencing.

bfd/ChangeLog
bfd/vms-gsd.c

index 76158ea..c210197 100644 (file)
@@ -1,3 +1,8 @@
+2002-11-05  Elias Athanasopoulos  <eathan@otenet.gr>
+
+       * vms-gsd.c (_bfd_vms_write_gsd): Check that symbol->udata.p is
+       non-NULL before dereferencing.
+
 2002-11-04  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
 
        * vms.c (vms_object_p): Restore the start address when returning
index 0024122..10fbb2d 100644 (file)
@@ -420,7 +420,7 @@ _bfd_vms_slurp_gsd (abfd, objtype)
                        {
                          bfd_set_error (bfd_error_no_memory);
                          return -1;
-                       }
+                       }
                    }
                }
              else
@@ -661,13 +661,13 @@ _bfd_vms_slurp_gsd (abfd, objtype)
              }
            else        /* symbol reference */
              {
-               symbol->name =
+               symbol->name =
                  _bfd_vms_save_counted_string (vms_rec+8);
 #if VMS_DEBUG
                vms_debug(4, "egsd sym ref #%d (%s, %04x=%s)\n", abfd->symcount,
                           symbol->name, old_flags, flag2str(gsyflagdesc, old_flags));
 #endif
-               symbol->section = bfd_make_section (abfd, BFD_UND_SECTION_NAME);
+               symbol->section = bfd_make_section (abfd, BFD_UND_SECTION_NAME);
              }
 
            symbol->flags = new_flags;
@@ -901,7 +901,7 @@ _bfd_vms_write_gsd (abfd, objtype)
          unsigned long ca_psindx = 0;
          unsigned long psindx;
 
-         if (old_flags & BSF_FUNCTION)
+         if ((old_flags & BSF_FUNCTION) && symbol->udata.p != NULL)
            {
              code_address = ((asymbol *) (symbol->udata.p))->value;
              ca_psindx = ((asymbol *) (symbol->udata.p))->section->index;