//Step 1: Read the PE headers and reserve enough space for the whole image somewhere.
IMAGE_DOS_HEADER dosHeader;
IMAGE_NT_HEADERS ntHeader;
- errno = 0;
- if (0 != lseek(fd, 0, SEEK_SET))
- {
- palError = FILEGetLastErrorFromErrno();
- ERROR_(LOADER)( "lseek failed\n" );
- goto done;
- }
- if (sizeof(dosHeader) != read(fd, &dosHeader, sizeof(dosHeader)))
+ if (sizeof(dosHeader) != pread(fd, &dosHeader, sizeof(dosHeader), 0))
{
palError = FILEGetLastErrorFromErrno();
ERROR_(LOADER)( "reading dos header failed\n" );
goto done;
}
- if (dosHeader.e_lfanew != lseek(fd, dosHeader.e_lfanew, SEEK_SET))
- {
- palError = FILEGetLastErrorFromErrno();
- goto done;
- }
- if (sizeof(ntHeader) != read(fd, &ntHeader, sizeof(ntHeader)))
+ if (sizeof(ntHeader) != pread(fd, &ntHeader, sizeof(ntHeader), dosHeader.e_lfanew))
{
palError = FILEGetLastErrorFromErrno();
goto done;