From eb929319388cb7f48141b3fde062a8392fe4c00d Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Tue, 7 Feb 2017 02:17:55 +0100 Subject: plistutil: Print error message when opening input/output file fails and plug memory leaks on error --- tools/plistutil.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/plistutil.c b/tools/plistutil.c index 7652bdc..a1a8c9c 100644 --- a/tools/plistutil.c +++ b/tools/plistutil.c @@ -27,6 +27,7 @@ #include #include #include +#include #ifdef _MSC_VER #pragma warning(disable:4996) @@ -124,14 +125,18 @@ int main(int argc, char *argv[]) // read input file iplist = fopen(options->in_file, "rb"); if (!iplist) { + printf("ERROR: Could not open input file '%s': %s\n", options->in_file, strerror(errno)); free(options); return 1; } - stat(options->in_file, &filestats); + memset(&filestats, '\0', sizeof(struct stat)); + fstat(fileno(iplist), &filestats); if (filestats.st_size < 8) { printf("ERROR: Input file is too small to contain valid plist data.\n"); + free(options); + fclose(iplist); return -1; } @@ -159,6 +164,7 @@ int main(int argc, char *argv[]) { FILE *oplist = fopen(options->out_file, "wb"); if (!oplist) { + printf("ERROR: Could not open output file '%s': %s\n", options->out_file, strerror(errno)); free(options); return 1; } -- cgit v1.1-32-gdbae