summaryrefslogtreecommitdiff
path: root/app-text/pinfo/files/pinfo-0.6.10-info-suffix.patch
diff options
context:
space:
mode:
Diffstat (limited to 'app-text/pinfo/files/pinfo-0.6.10-info-suffix.patch')
-rw-r--r--app-text/pinfo/files/pinfo-0.6.10-info-suffix.patch28
1 files changed, 28 insertions, 0 deletions
diff --git a/app-text/pinfo/files/pinfo-0.6.10-info-suffix.patch b/app-text/pinfo/files/pinfo-0.6.10-info-suffix.patch
new file mode 100644
index 000000000000..45be53cd1bf6
--- /dev/null
+++ b/app-text/pinfo/files/pinfo-0.6.10-info-suffix.patch
@@ -0,0 +1,28 @@
+--- a/src/filehandling_functions.c
++++ b/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);