changeset 597:ec9e2908f569

Fixed invalid read in cleanquotedp()
author mortenp
date Mon, 13 Nov 2006 08:10:33 +1100
parents aefc70519e62
children 5cf8c96182ad
files ChangeLog src/strgen.c
diffstat 2 files changed, 9 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Nov 08 08:50:25 2006 +1100
+++ b/ChangeLog	Mon Nov 13 08:10:33 2006 +1100
@@ -1,3 +1,4 @@
+ o Fixed invalid read in cleanquotedp()
  o Fixed bug in gethdrline() introduced in 1.2.12-RC3
 1.2.12-RC4
  o Fixed memory leak in checkwait_smtpreply()
--- a/src/strgen.c	Wed Nov 08 08:50:25 2006 +1100
+++ b/src/strgen.c	Mon Nov 13 08:10:33 2006 +1100
@@ -29,6 +29,7 @@
 #include <netdb.h>
 #include <libgen.h>
 #include <time.h>
+#include <ctype.h>
 
 #include "strgen.h"
 #include "wrappers.h"
@@ -194,12 +195,16 @@
 	retstr = mymalloc(len + 1);
 	retstr[len] = '\0';
 	qc[2] = '\0';
-	while(*c != '\0') {
+	while(c < qpstr+len) {
 		switch(*c) {
 			case '=':
-				qc[0] = *(++c);
-				qc[1] = *(++c);
 				c++;
+				if (!isxdigit(*c))
+					break;
+				qc[0] = *(c++);
+				if (!isxdigit(*c))
+					break;
+				qc[1] = *(c++);
 				qcval = strtol(qc, NULL, 16);
 				if(qcval)
 					retstr[i++] = (char)qcval;