[ros-diffs] [gedmurphy] 34641: Fix Rva handling code

gedmurphy at svn.reactos.org gedmurphy at svn.reactos.org
Mon Jul 21 19:50:28 CEST 2008


Author: gedmurphy
Date: Mon Jul 21 12:50:27 2008
New Revision: 34641

URL: http://svn.reactos.org/svn/reactos?rev=34641&view=rev
Log:
Fix Rva handling code

Modified:
    trunk/reactos/lib/rtl/image.c

Modified: trunk/reactos/lib/rtl/image.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/image.c?rev=34641&r1=34640&r2=34641&view=diff
==============================================================================
--- trunk/reactos/lib/rtl/image.c [iso-8859-1] (original)
+++ trunk/reactos/lib/rtl/image.c [iso-8859-1] Mon Jul 21 12:50:27 2008
@@ -112,13 +112,13 @@
 	ULONG Count;
 
 	Count = SWAPW(NtHeader->FileHeader.NumberOfSections);
-	Section = (PIMAGE_SECTION_HEADER)((ULONG)&NtHeader->OptionalHeader +
-	                                  SWAPW(NtHeader->FileHeader.SizeOfOptionalHeader));
-	while (Count)
+	Section = IMAGE_FIRST_SECTION(NtHeader);
+
+	while (Count--)
 	{
 		Va = SWAPD(Section->VirtualAddress);
 		if ((Va <= Rva) &&
-		    (Rva < Va + SWAPD(Section->SizeOfRawData)))
+		    (Rva < Va + SWAPD(Section->Misc.VirtualSize)))
 			return Section;
 		Section++;
 	}
@@ -145,7 +145,7 @@
 
 	if (Section == NULL ||
 	    Rva < SWAPD(Section->VirtualAddress) ||
-	    Rva >= SWAPD(Section->VirtualAddress) + SWAPD(Section->SizeOfRawData))
+	    Rva >= SWAPD(Section->VirtualAddress) + SWAPD(Section->Misc.VirtualSize))
 	{
 		Section = RtlImageRvaToSection (NtHeader, BaseAddress, Rva);
 		if (Section == NULL)



More information about the Ros-diffs mailing list