changeset 351:370a584ade9d

Fix invalid write by 1 in cleanquotedp.
author mmj
date Tue, 09 Nov 2004 22:02:50 +1100
parents f88b108b82b6
children 8173978c2bfd
files include/strgen.h src/strgen.c
diffstat 2 files changed, 9 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/include/strgen.h	Tue Nov 09 19:40:48 2004 +1100
+++ b/include/strgen.h	Tue Nov 09 22:02:50 2004 +1100
@@ -33,6 +33,6 @@
 char *hostnamestr(void);
 char *mydirname(const char *path);
 char *mybasename(const char *path);
-char *cleanquotedp(char *qpstr);
+char *cleanquotedp(const char *qpstr);
 
 #endif /* STRGEN_H */
--- a/src/strgen.c	Tue Nov 09 19:40:48 2004 +1100
+++ b/src/strgen.c	Tue Nov 09 22:02:50 2004 +1100
@@ -177,17 +177,22 @@
 	return ret;
 }
 
-char *cleanquotedp(char *qpstr)
+char *cleanquotedp(const char *qpstr)
 {
-	char *retstr = mymalloc(strlen(qpstr));
-	char qc[3], *c = qpstr;
+	char *retstr;
+	char qc[3];
+	const char *c = qpstr;
 	long qcval;
 	int i = 0;
+	size_t len;
 
 	/* XXX: We only use this function for checking whether the subject
 	 * prefix is only present, so the recoding is neither guaranteed
 	 * complete nor correct */
 
+	len = strlen(qpstr);
+	retstr = mymalloc(len + 1);
+	retstr[len] = '\0';
 	qc[2] = '\0';
 	while(*c != '\0') {
 		switch(*c) {