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;
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;
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;
}
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;
}