aboutsummaryrefslogtreecommitdiff
path: root/bfd/pef.c
diff options
context:
space:
mode:
Diffstat (limited to 'bfd/pef.c')
-rw-r--r--bfd/pef.c40
1 files changed, 17 insertions, 23 deletions
diff --git a/bfd/pef.c b/bfd/pef.c
index 574d9bc..b0f6c2d 100644
--- a/bfd/pef.c
+++ b/bfd/pef.c
@@ -446,14 +446,15 @@ bfd_pef_print_loader_section (bfd *abfd, FILE *file)
return -1;
loaderlen = loadersec->size;
- loaderbuf = bfd_malloc (loaderlen);
+ if (loaderlen < 56)
+ return -1;
+ if (bfd_seek (abfd, loadersec->filepos, SEEK_SET) != 0)
+ return -1;
+ loaderbuf = _bfd_malloc_and_read (abfd, loaderlen, loaderlen);
if (loaderbuf == NULL)
return -1;
- if (bfd_seek (abfd, loadersec->filepos, SEEK_SET) < 0
- || bfd_bread ((void *) loaderbuf, loaderlen, abfd) != loaderlen
- || loaderlen < 56
- || bfd_pef_parse_loader_header (abfd, loaderbuf, 56, &header) < 0)
+ if (bfd_pef_parse_loader_header (abfd, loaderbuf, 56, &header) < 0)
{
free (loaderbuf);
return -1;
@@ -479,17 +480,14 @@ bfd_pef_scan_start_address (bfd *abfd)
goto end;
loaderlen = loadersec->size;
- loaderbuf = bfd_malloc (loaderlen);
- if (loaderbuf == NULL)
- goto end;
-
- if (bfd_seek (abfd, loadersec->filepos, SEEK_SET) < 0)
+ if (loaderlen < 56)
goto error;
- if (bfd_bread ((void *) loaderbuf, loaderlen, abfd) != loaderlen)
+ if (bfd_seek (abfd, loadersec->filepos, SEEK_SET) != 0)
goto error;
-
- if (loaderlen < 56)
+ loaderbuf = _bfd_malloc_and_read (abfd, loaderlen, loaderlen);
+ if (loaderbuf == NULL)
goto error;
+
ret = bfd_pef_parse_loader_header (abfd, loaderbuf, 56, &header);
if (ret < 0)
goto error;
@@ -903,12 +901,10 @@ bfd_pef_parse_symbols (bfd *abfd, asymbol **csym)
if (codesec != NULL)
{
codelen = codesec->size;
- codebuf = bfd_malloc (codelen);
- if (codebuf == NULL)
- goto end;
- if (bfd_seek (abfd, codesec->filepos, SEEK_SET) < 0)
+ if (bfd_seek (abfd, codesec->filepos, SEEK_SET) != 0)
goto end;
- if (bfd_bread ((void *) codebuf, codelen, abfd) != codelen)
+ codebuf = _bfd_malloc_and_read (abfd, codelen, codelen);
+ if (codebuf == NULL)
goto end;
}
@@ -916,12 +912,10 @@ bfd_pef_parse_symbols (bfd *abfd, asymbol **csym)
if (loadersec != NULL)
{
loaderlen = loadersec->size;
- loaderbuf = bfd_malloc (loaderlen);
- if (loaderbuf == NULL)
+ if (bfd_seek (abfd, loadersec->filepos, SEEK_SET) != 0)
goto end;
- if (bfd_seek (abfd, loadersec->filepos, SEEK_SET) < 0)
- goto end;
- if (bfd_bread ((void *) loaderbuf, loaderlen, abfd) != loaderlen)
+ loaderbuf = _bfd_malloc_and_read (abfd, loaderlen, loaderlen);
+ if (loaderbuf == NULL)
goto end;
}