genidl: Check if the DataDirectory[2] is present NumberOfRvaAndSizes contains number of entries in DataDirectory[] array. Signed-off-by: Martin Storsjö <martin@martin.st>
diff --git a/mingw-w64-tools/genidl/src/genidl_readpe.c b/mingw-w64-tools/genidl/src/genidl_readpe.c index 1bdf8ae..cb3ec74 100644 --- a/mingw-w64-tools/genidl/src/genidl_readpe.c +++ b/mingw-w64-tools/genidl/src/genidl_readpe.c
@@ -183,13 +183,15 @@ if (be64) { fread (&hdr.hdr64, 1, sizeof (sImgNtHeaders64), fp); - res_size = hdr.hdr64.OptionalHeader.DataDirectory[2].size; + if (hdr.hdr64.OptionalHeader.NumberOfRvaAndSizes > 2) + res_size = hdr.hdr64.OptionalHeader.DataDirectory[2].size; sect_count = hdr.hdr64.FileHeader.NumberOfSections; } else { fread (&hdr.hdr32, 1, sizeof (sImgNtHeaders32), fp); - res_size = hdr.hdr32.OptionalHeader.DataDirectory[2].size; + if (hdr.hdr32.OptionalHeader.NumberOfRvaAndSizes > 2) + res_size = hdr.hdr32.OptionalHeader.DataDirectory[2].size; sect_count = hdr.hdr32.FileHeader.NumberOfSections; } if (!res_size)