diff --git a/sfcommands/printinfo.c b/sfcommands/printinfo.c index 60e6947..f5cf925 100644 --- a/sfcommands/printinfo.c +++ b/sfcommands/printinfo.c @@ -37,6 +37,7 @@ #include #include #include +#include static char *copyrightstring (AFfilehandle file); @@ -147,7 +148,11 @@ static char *copyrightstring (AFfilehandle file) int i, misccount; misccount = afGetMiscIDs(file, NULL); - miscids = (int *) malloc(sizeof (int) * misccount); + if(!misccount) + return NULL; + miscids = (int *) calloc(misccount, sizeof(int)); + if(!miscids) + return NULL; afGetMiscIDs(file, miscids); for (i=0; i= INT_MAX -1 ) { + goto error; + } + char *data = (char *) calloc(datasize + 1, 1); afReadMisc(file, miscids[i], data, datasize); copyright = data; break; } - +error: free(miscids); return copyright;