[PATCH 1/2] [WineDump]: now managing the string table size in PE file format
Eric Pouech
eric.pouech at orange.fr
Tue Dec 29 06:02:33 CST 2009
A+
---
tools/winedump/pe.c | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/tools/winedump/pe.c b/tools/winedump/pe.c
index 1f9c5a7..a2c2f0a 100644
--- a/tools/winedump/pe.c
+++ b/tools/winedump/pe.c
@@ -373,8 +373,12 @@ static void dump_pe_header(void)
void dump_section(const IMAGE_SECTION_HEADER *sectHead, const char* strtable)
{
- if (strtable && sectHead->Name[0] == '/') /* long section name */
- printf(" %.8s (%s)", sectHead->Name, strtable + atoi((const char*)sectHead->Name + 1));
+ unsigned offset;
+
+ /* long section name ? */
+ if (strtable && sectHead->Name[0] == '/' &&
+ ((offset = atoi((const char*)sectHead->Name + 1)) < *(DWORD*)strtable))
+ printf(" %.8s (%s)", sectHead->Name, strtable + offset);
else
printf(" %-8.8s", sectHead->Name);
printf(" VirtSize: 0x%08x VirtAddr: 0x%08x\n",
@@ -456,7 +460,6 @@ static void dump_sections(const void *base, const void* addr, unsigned num_sect)
if (PE_nt_headers->FileHeader.PointerToSymbolTable && PE_nt_headers->FileHeader.NumberOfSymbols)
{
- /* FIXME: no way to get strtable size */
strtable = (const char*)base +
PE_nt_headers->FileHeader.PointerToSymbolTable +
PE_nt_headers->FileHeader.NumberOfSymbols * sizeof(IMAGE_SYMBOL);
More information about the wine-patches
mailing list