IMAGE_SECTION_HEADER data_header;
IMAGE_SECTION_HEADER zdata_header;
IMAGE_SECTION_HEADER rsrc_header;
- BYTE pad[488];
+ IMAGE_SECTION_HEADER bss_header;
+ BYTE pad[448];
BYTE text_data[0x1200];
BYTE data_data[0x1200];
BYTE rsrc_data[0x400];
/* IMAGE_FILE_HEADER */
{
IMAGE_FILE_MACHINE_I386, /* Machine */
- 4, /* NumberOfSections */
+ 5, /* NumberOfSections */
0x47EFDF09, /* TimeDateStamp */
0, /* PointerToSymbolTable */
0, /* NumberOfSymbols */
IMAGE_SCN_MEM_READ |
IMAGE_SCN_CNT_INITIALIZED_DATA, /* Characteristics */
},
+ /* IMAGE_SECTION_HEADER */
+ {
+ /* PointerToRawData = 0 while SizeOfRawData != 0, CORE-18797 */
+ ".bss", /* Name */
+ { 0x400 }, /* Misc.VirtualSize */
+ 0x5000, /* VirtualAddress */
+ 0x600, /* SizeOfRawData */
+ 0, /* PointerToRawData */
+ 0, /* PointerToRelocations */
+ 0, /* PointerToLinenumbers */
+ 0, /* NumberOfRelocations */
+ 0, /* NumberOfLinenumbers */
+ IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_READ |
+ IMAGE_SCN_CNT_UNINITIALIZED_DATA, /* Characteristics */
+ },
/* fill */
{ 0 },
/* text */
ok_hex(ImageFile->zdata_header.SizeOfRawData, RawSizeImageFile.zdata_header.SizeOfRawData);
ok_hex(ImageFile->zdata_header.PointerToRawData, 0);
+ /* PointerToRawData = 0 resets SizeOfRawData to 0, CORE-18797 */
+ ok_hex(ImageFile->bss_header.SizeOfRawData, 0);
+ ok_hex(ImageFile->bss_header.PointerToRawData, 0);
+
#define TEST_BYTE(n, v) \
StartSeh() \
ok(Bytes[n] == v, "[%lu] Bytes[%u] = 0x%x, expected 0x%x\n", \