mirror of
https://github.com/reactos/wine.git
synced 2024-11-25 04:39:45 +00:00
winedump: Add a sanity check before dumping long format library export.
This commit is contained in:
parent
d32d5a4706
commit
6d62ef657d
@ -183,6 +183,9 @@ void lib_dump(void)
|
||||
|
||||
cur_file_pos += sizeof(IMAGE_ARCHIVE_MEMBER_HEADER);
|
||||
|
||||
size = strtoul((const char *)iamh->Size, NULL, 10);
|
||||
size = (size + 1) & ~1; /* align to an even address */
|
||||
|
||||
/* FIXME: only import library contents with the short format are
|
||||
* recognized.
|
||||
*/
|
||||
@ -193,6 +196,7 @@ void lib_dump(void)
|
||||
}
|
||||
else if (strncmp((const char *)iamh->Name, IMAGE_ARCHIVE_LINKER_MEMBER, sizeof(iamh->Name)))
|
||||
{
|
||||
long expected_size;
|
||||
const IMAGE_FILE_HEADER *fh = (const IMAGE_FILE_HEADER *)ioh;
|
||||
|
||||
if (globals.do_dumpheader)
|
||||
@ -204,12 +208,12 @@ void lib_dump(void)
|
||||
dump_optional_header(oh, fh->SizeOfOptionalHeader);
|
||||
}
|
||||
}
|
||||
dump_long_import(fh, (const IMAGE_SECTION_HEADER *)((const char *)fh + sizeof(*fh) + fh->SizeOfOptionalHeader), fh->NumberOfSections);
|
||||
/* Sanity check */
|
||||
expected_size = sizeof(*fh) + fh->SizeOfOptionalHeader + fh->NumberOfSections * sizeof(IMAGE_SECTION_HEADER);
|
||||
if (size > expected_size)
|
||||
dump_long_import(fh, (const IMAGE_SECTION_HEADER *)((const char *)fh + sizeof(*fh) + fh->SizeOfOptionalHeader), fh->NumberOfSections);
|
||||
}
|
||||
|
||||
size = strtoul((const char *)iamh->Size, NULL, 10);
|
||||
size = (size + 1) & ~1; /* align to an even address */
|
||||
|
||||
cur_file_pos += size;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user