--- pinfo-0.6.9-orig/src/filehandling_functions.c +++ pinfo-0.6.9/src/filehandling_functions.c @@ -96,11 +96,14 @@ matchfile(char **buf, char *name) { /* use strcat rather than strdup, because xmalloc handles all * malloc errors */ - char *thisfile = xmalloc(strlen(dp->d_name)+1); + int len = strlen(dp->d_name)+1; + char *thisfile = xmalloc(len * 2); + char *thisfile_info = thisfile + len; strcat(thisfile, dp->d_name); /* strip suffixes (so "gcc.info.gz" -> "gcc") */ strip_compression_suffix(thisfile); + strcat(thisfile_info, thisfile); strip_info_suffix(thisfile); /* compare this file with the file we're looking for */ @@ -109,8 +112,7 @@ matchfile(char **buf, char *name) /* we found a match! */ matched++; /* put it in the buffer */ - strncat(Buf, thisfile, 1023-strlen(Buf)); - strncat(Buf, ".info", 1023-strlen(Buf)); + strncat(Buf, thisfile_info, 1023-strlen(Buf)); /* clean up, and exit the loop */ xfree(thisfile);