Mercurial > hg > mlmmj
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;