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)