Fix crash on none PE(+) images. git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@1933 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-tools/gendef/src/gendef.c b/mingw-w64-tools/gendef/src/gendef.c index ef73461..c192666 100644 --- a/mingw-w64-tools/gendef/src/gendef.c +++ b/mingw-w64-tools/gendef/src/gendef.c
@@ -188,7 +188,7 @@ if (argc < 2) { - show_usage(); + show_usage (); return 0; } @@ -200,19 +200,22 @@ fninput = opt->fninput; fnoutput = opt->fnoutput; - load_pep(); - if (gPEDta || gPEPDta) - { - if (gPEDta) - do_pedef (); - else - do_pepdef (); - dump_def (); + if (load_pep ()) + { + if (gPEDta || gPEPDta) + { + if (gPEDta) + do_pedef (); + else + do_pepdef (); + dump_def (); + } } if (fndllname) free (fndllname); fndllname = NULL; - free (gDta); + if (gDta) + free (gDta); free(opt->fninput); free(opt->fnoutput); free(opt); @@ -222,7 +225,7 @@ } static int -load_pep(void) +load_pep (void) { FILE *fp = fopen (fninput, "rb"); @@ -269,6 +272,8 @@ { fprintf (stderr, "*** [%s] no PE(+) signature\n", fninput); free (gDta); + gPEPDta = NULL; + gPEDta = NULL; return 0; } if (gPEDta->FileHeader.SizeOfOptionalHeader == IMAGE_SIZEOF_NT_OPTIONAL32_HEADER @@ -287,6 +292,8 @@ { free (gDta); fprintf (stderr, "*** [%s] no PE(+) optional header\n", fninput); + gPEPDta = NULL; + gPEDta = NULL; return 0; } return 1;