Index: dll/win32/dbghelp/compat.c =================================================================== --- dll/win32/dbghelp/compat.c (révision 69893) +++ dll/win32/dbghelp/compat.c (copie de travail) @@ -61,11 +61,11 @@ while (Count--) { Va = SWAPD(Section->VirtualAddress); - if ((Va <= Rva) && - (Rva < Va + SWAPD(Section->Misc.VirtualSize))) + if ((Va <= Rva) && (Rva < Va + SWAPD(Section->SizeOfRawData))) return Section; Section++; } + return NULL; } @@ -83,9 +83,9 @@ if ((Section == NULL) || (Rva < SWAPD(Section->VirtualAddress)) || - (Rva >= SWAPD(Section->VirtualAddress) + SWAPD(Section->Misc.VirtualSize))) + (Rva >= SWAPD(Section->VirtualAddress) + SWAPD(Section->SizeOfRawData))) { - Section = RtlImageRvaToSection (NtHeader, BaseAddress, Rva); + Section = RtlImageRvaToSection(NtHeader, BaseAddress, Rva); if (Section == NULL) return NULL; @@ -93,9 +93,8 @@ *SectionHeader = Section; } - return (PVOID)((ULONG_PTR)BaseAddress + - Rva + - SWAPD(Section->PointerToRawData) - + return (PVOID)((ULONG_PTR)BaseAddress + Rva + + (ULONG_PTR)SWAPD(Section->PointerToRawData) - (ULONG_PTR)SWAPD(Section->VirtualAddress)); } @@ -132,7 +131,7 @@ if (MappedAsImage || Va < SWAPD(NtHeader->OptionalHeader.SizeOfHeaders)) return (PVOID)((ULONG_PTR)BaseAddress + Va); - /* image mapped as ordinary file, we must find raw pointer */ + /* Image mapped as ordinary file, we must find raw pointer */ return RtlImageRvaToVa(NtHeader, BaseAddress, Va, NULL); } Index: lib/rtl/image.c =================================================================== --- lib/rtl/image.c (révision 69893) +++ lib/rtl/image.c (copie de travail) @@ -301,11 +301,10 @@ if (MappedAsImage || Va < SWAPD(NtHeader->OptionalHeader.SizeOfHeaders)) return (PVOID)((ULONG_PTR)BaseAddress + Va); - /* image mapped as ordinary file, we must find raw pointer */ + /* Image mapped as ordinary file, we must find raw pointer */ return RtlImageRvaToVa(NtHeader, BaseAddress, Va, NULL); } - /* * @implemented */ @@ -326,15 +325,14 @@ while (Count--) { Va = SWAPD(Section->VirtualAddress); - if ((Va <= Rva) && - (Rva < Va + SWAPD(Section->Misc.VirtualSize))) + if ((Va <= Rva) && (Rva < Va + SWAPD(Section->SizeOfRawData))) return Section; Section++; } + return NULL; } - /* * @implemented */ @@ -353,9 +351,9 @@ if ((Section == NULL) || (Rva < SWAPD(Section->VirtualAddress)) || - (Rva >= SWAPD(Section->VirtualAddress) + SWAPD(Section->Misc.VirtualSize))) + (Rva >= SWAPD(Section->VirtualAddress) + SWAPD(Section->SizeOfRawData))) { - Section = RtlImageRvaToSection (NtHeader, BaseAddress, Rva); + Section = RtlImageRvaToSection(NtHeader, BaseAddress, Rva); if (Section == NULL) return NULL; @@ -363,9 +361,8 @@ *SectionHeader = Section; } - return (PVOID)((ULONG_PTR)BaseAddress + - Rva + - SWAPD(Section->PointerToRawData) - + return (PVOID)((ULONG_PTR)BaseAddress + Rva + + (ULONG_PTR)SWAPD(Section->PointerToRawData) - (ULONG_PTR)SWAPD(Section->VirtualAddress)); }