Module: wine Branch: refs/heads/master Commit: eca9e4449c857f6f0f767ba1b3f243dd7d7799eb URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=eca9e4449c857f6f0f767ba1...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Jan 13 13:52:07 2006 +0100
ntdll: Round PE header size to a page boundary for size checks.
---
dlls/ntdll/virtual.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c index e6d0236..e74b3e0 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c @@ -838,7 +838,7 @@ static NTSTATUS map_image( HANDLE hmappi off_t pos; struct stat st; struct file_view *view = NULL; - char *ptr; + char *ptr, *header_end;
/* zero-map the whole range */
@@ -870,10 +870,10 @@ static NTSTATUS map_image( HANDLE hmappi removable ) != STATUS_SUCCESS) goto error; dos = (IMAGE_DOS_HEADER *)ptr; nt = (IMAGE_NT_HEADERS *)(ptr + dos->e_lfanew); - if ((char *)(nt + 1) > ptr + header_size) goto error; - + header_end = ptr + ROUND_SIZE( 0, header_size ); + if ((char *)(nt + 1) > header_end) goto error; sec = (IMAGE_SECTION_HEADER*)((char*)&nt->OptionalHeader+nt->FileHeader.SizeOfOptionalHeader); - if ((char *)(sec + nt->FileHeader.NumberOfSections) > ptr + header_size) goto error; + if ((char *)(sec + nt->FileHeader.NumberOfSections) > header_end) goto error;
imports = nt->OptionalHeader.DataDirectory + IMAGE_DIRECTORY_ENTRY_IMPORT; if (!imports->Size || !imports->VirtualAddress) imports = NULL;