PR gdb/2280
authorDaniel Jacobowitz <drow@false.org>
Thu, 11 Oct 2007 19:48:02 +0000 (19:48 +0000)
committerDaniel Jacobowitz <drow@false.org>
Thu, 11 Oct 2007 19:48:02 +0000 (19:48 +0000)
* coffread.c (read_one_sym): Check for read errors.

gdb/ChangeLog
gdb/coffread.c

index 0faea7cf4a927670effdbe580a64bdb69cca1a4a..f4eb180cdfbef6a99954ea6e56a048d41a84c4ba 100644 (file)
@@ -1,3 +1,8 @@
+2007-10-11  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       PR gdb/2280
+       * coffread.c (read_one_sym): Check for read errors.
+
 2007-10-11  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * linux-nat.c (lin_lwp_attach_lwp): Use "Linux kernel 2.6.19"
index b767eaff7134c81cc0f38f02f2ee977c7a8b4ae7..c4927490b99b8f158d1309fbe9a99326b176c74c 100644 (file)
@@ -1116,20 +1116,29 @@ read_one_sym (struct coff_symbol *cs,
              union internal_auxent *aux)
 {
   int i;
+  bfd_size_type bytes;
 
   cs->c_symnum = symnum;
-  bfd_bread (temp_sym, local_symesz, nlist_bfd_global);
+  bytes = bfd_bread (temp_sym, local_symesz, nlist_bfd_global);
+  if (bytes != local_symesz)
+    error ("%s: error reading symbols", current_objfile->name);
   bfd_coff_swap_sym_in (symfile_bfd, temp_sym, (char *) sym);
   cs->c_naux = sym->n_numaux & 0xff;
   if (cs->c_naux >= 1)
     {
-      bfd_bread (temp_aux, local_auxesz, nlist_bfd_global);
+      bytes  = bfd_bread (temp_aux, local_auxesz, nlist_bfd_global);
+      if (bytes != local_auxesz)
+       error ("%s: error reading symbols", current_objfile->name);
       bfd_coff_swap_aux_in (symfile_bfd, temp_aux, sym->n_type, sym->n_sclass,
                            0, cs->c_naux, (char *) aux);
       /* If more than one aux entry, read past it (only the first aux
          is important). */
       for (i = 1; i < cs->c_naux; i++)
-       bfd_bread (temp_aux, local_auxesz, nlist_bfd_global);
+       {
+         bytes = bfd_bread (temp_aux, local_auxesz, nlist_bfd_global);
+         if (bytes != local_auxesz)
+           error ("%s: error reading symbols", current_objfile->name);
+       }
     }
   cs->c_name = getsymname (sym);
   cs->c_value = sym->n_value;