do_relocations: process relocation blocks with a VirtualAddress of 0,

stop once SizeOfBlock == 0.
This commit is contained in:
Andrew Lewycky 2001-11-30 23:08:02 +00:00 committed by Alexandre Julliard
parent c3965bc5d0
commit ffc9df2d0c
1 changed files with 1 additions and 1 deletions

View File

@ -401,7 +401,7 @@ static int do_relocations( char *base, const IMAGE_NT_HEADERS *nt, const char *f
if ((nt->OptionalHeader.ImageBase & 0x80000000) && !((DWORD)base & 0x80000000)) if ((nt->OptionalHeader.ImageBase & 0x80000000) && !((DWORD)base & 0x80000000))
ERR( "Forced to relocate system DLL (base > 2GB). This is not good.\n" ); ERR( "Forced to relocate system DLL (base > 2GB). This is not good.\n" );
for ( ; ((char *)rel < base + dir->VirtualAddress + dir->Size) && rel->VirtualAddress; for ( ; ((char *)rel < base + dir->VirtualAddress + dir->Size) && rel->SizeOfBlock;
rel = (IMAGE_BASE_RELOCATION*)((char*)rel + rel->SizeOfBlock)) rel = (IMAGE_BASE_RELOCATION*)((char*)rel + rel->SizeOfBlock))
{ {
char *page = base + rel->VirtualAddress; char *page = base + rel->VirtualAddress;