Eric Pouech : dbghelp: Use virtual size (not raw/file size) when getting the size of a PE section.
Alexandre Julliard
julliard at winehq.org
Mon Aug 30 13:00:37 CDT 2010
Module: wine
Branch: master
Commit: 63c7ea649427c1518d1e8b3305620dfdf1dba358
URL: http://source.winehq.org/git/wine.git/?a=commit;h=63c7ea649427c1518d1e8b3305620dfdf1dba358
Author: Eric Pouech <eric.pouech at orange.fr>
Date: Sat Aug 28 09:09:24 2010 +0200
dbghelp: Use virtual size (not raw/file size) when getting the size of a PE section.
---
dlls/dbghelp/pe_module.c | 12 ++++++++++--
1 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/dlls/dbghelp/pe_module.c b/dlls/dbghelp/pe_module.c
index 18cec9a..d41cdf4 100644
--- a/dlls/dbghelp/pe_module.c
+++ b/dlls/dbghelp/pe_module.c
@@ -79,6 +79,14 @@ const char* pe_map_section(struct image_section_map* ism)
fmap->sect[ism->sidx].mapped == IMAGE_NO_MAP)
{
IMAGE_NT_HEADERS* nth;
+
+ if (fmap->sect[ism->sidx].shdr.Misc.VirtualSize > fmap->sect[ism->sidx].shdr.SizeOfRawData)
+ {
+ FIXME("Section %ld: virtual (0x%x) > raw (0x%x) size - not supported\n",
+ ism->sidx, fmap->sect[ism->sidx].shdr.Misc.VirtualSize,
+ fmap->sect[ism->sidx].shdr.SizeOfRawData);
+ return IMAGE_NO_MAP;
+ }
/* FIXME: that's rather drastic, but that will do for now
* that's ok if the full file map exists, but we could be less agressive otherwise and
* only map the relevant section
@@ -162,13 +170,13 @@ DWORD_PTR pe_get_map_rva(const struct image_section_map* ism)
/******************************************************************
* pe_get_map_size
*
- * Get the size of an PE section
+ * Get the size of a PE section
*/
unsigned pe_get_map_size(const struct image_section_map* ism)
{
if (ism->sidx < 0 || ism->sidx >= ism->fmap->u.pe.ntheader.FileHeader.NumberOfSections)
return 0;
- return ism->fmap->u.pe.sect[ism->sidx].shdr.SizeOfRawData;
+ return ism->fmap->u.pe.sect[ism->sidx].shdr.Misc.VirtualSize;
}
/******************************************************************
More information about the wine-cvs
mailing list