aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1994-04-04 22:40:09 +0000
committerIan Lance Taylor <ian@airs.com>1994-04-04 22:40:09 +0000
commit29e626eb971e3f0aaa26b1ff8a554e2b2c98b1cd (patch)
tree8b712376443393a786d3a5a3cafd325600ec9736 /bfd
parentf3a14a9ee254994b54f756da391dd173bda82eee (diff)
downloadgdb-29e626eb971e3f0aaa26b1ff8a554e2b2c98b1cd.zip
gdb-29e626eb971e3f0aaa26b1ff8a554e2b2c98b1cd.tar.gz
gdb-29e626eb971e3f0aaa26b1ff8a554e2b2c98b1cd.tar.bz2
Made sure that every call to bfd_read, bfd_write, and bfd_seek
checks the return value and handled bfd_error correctly. These changes are not itemised. Also: * aoutx.h (emit_strtab): Change return type to boolean, and return errors. (NAME(aout,write_syms)): Check emit_strtab return value. (NAME(aout,final_link)): Likewise.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/aoutx.h24
1 files changed, 14 insertions, 10 deletions
diff --git a/bfd/aoutx.h b/bfd/aoutx.h
index 70a722b..5d94fb4 100644
--- a/bfd/aoutx.h
+++ b/bfd/aoutx.h
@@ -1038,7 +1038,8 @@ NAME(aout,set_section_contents) (abfd, section, location, offset, count)
/* regardless, once we know what we're doing, we might as well get going */
if (section != obj_bsssec(abfd))
{
- bfd_seek (abfd, section->filepos + offset, SEEK_SET);
+ if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0)
+ return false;
if (count) {
return (bfd_write ((PTR)location, 1, count, abfd) == count) ?
@@ -1945,7 +1946,7 @@ add_to_stringtab (abfd, str, tab)
return entry->index;
}
-static void
+static boolean
emit_strtab (abfd, tab)
bfd *abfd;
struct stringtab_data *tab;
@@ -1960,11 +1961,16 @@ emit_strtab (abfd, tab)
char buffer[BYTES_IN_WORD];
PUT_WORD (abfd, tab->index, (unsigned char *) buffer);
- bfd_write ((PTR) buffer, 1, BYTES_IN_WORD, abfd);
+ if (bfd_write ((PTR) buffer, 1, BYTES_IN_WORD, abfd) != BYTES_IN_WORD)
+ return false;
for (entry = tab->output_order; entry; entry = entry->next_to_output)
{
- bfd_write ((PTR) entry->string, 1, strlen (entry->string) + 1, abfd);
+ size_t len = strlen (entry->string) + 1;
+
+ if (bfd_write ((PTR) entry->string, 1, len, abfd) != len)
+ return false;
+
#ifdef GATHER_STATISTICS
count++;
#endif
@@ -2012,6 +2018,8 @@ emit_strtab (abfd, tab)
}
g->KEEPIT = (KEEPITTYPE) count;
} */
+
+ return true;
}
boolean
@@ -2060,9 +2068,7 @@ NAME(aout,write_syms) (abfd)
g->KEEPIT = count;
}
- emit_strtab (abfd, &strtab);
-
- return true;
+ return emit_strtab (abfd, &strtab);
}
@@ -3600,9 +3606,7 @@ NAME(aout,final_link) (abfd, info, callback)
/* Write out the string table. */
if (bfd_seek (abfd, obj_str_filepos (abfd), SEEK_SET) != 0)
return false;
- emit_strtab (abfd, &aout_info.strtab);
-
- return true;
+ return emit_strtab (abfd, &aout_info.strtab);
}
/* Link an a.out input BFD into the output file. */