diff options
author | Baptiste Daroussin <bapt@FreeBSD.org> | 2021-05-19 15:56:19 +0200 |
---|---|---|
committer | Baptiste Daroussin <bapt@FreeBSD.org> | 2021-05-19 17:49:04 +0200 |
commit | 0367371f745716ba6e9eca552c935fc8d88f1fb3 (patch) | |
tree | b3a41ed7414ad27355db4f3a8029e19c016fcc0c /www/hypermail/files | |
parent | x11/kitty: Tidy up Makefile and pkg-descr. (diff) |
www/hypermail: add a patch to fix memory issues
Diffstat (limited to 'www/hypermail/files')
-rw-r--r-- | www/hypermail/files/patch-memory-fixes | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/www/hypermail/files/patch-memory-fixes b/www/hypermail/files/patch-memory-fixes new file mode 100644 index 000000000000..8e4df362ea77 --- /dev/null +++ b/www/hypermail/files/patch-memory-fixes @@ -0,0 +1,60 @@ +diff --git src/parse.c src/parse.c +index 36da5df..679514c 100644 +--- src/parse.c ++++ src/parse.c +@@ -924,7 +924,7 @@ static char *mdecodeRFC2047(char *string, int length, char *charsetsave) + char charset[129]; + char encoding[33]; + char dummy[129]; +- char *ptr; ++ char *ptr, *endptr; + char *old_output; + + #ifdef NOTUSED +@@ -959,6 +959,7 @@ static char *mdecodeRFC2047(char *string, int length, char *charsetsave) + + if (!strcasecmp("q", encoding)) { + /* quoted printable decoding */ ++ endptr = ptr + strlen(ptr); + + #ifdef HAVE_ICONV + char *orig2,*output2,*output3; +@@ -967,7 +968,7 @@ static char *mdecodeRFC2047(char *string, int length, char *charsetsave) + memset(output2,0,strlen(string)+1); + old_output=output; + +- for (; *ptr; ptr++) { ++ for (; ptr < endptr; ptr++) { + switch (*ptr) { + case '=': + sscanf(ptr + 1, "%02X", &value); +@@ -991,7 +992,7 @@ static char *mdecodeRFC2047(char *string, int length, char *charsetsave) + memcpy(charsetsave,charset,charsetlen); + charsetsave[charsetlen] = '\0'; + #else +- for (; *ptr; ptr++) { ++ for (; ptr < endptr; ptr++) { + switch (*ptr) { + case '=': + sscanf(ptr + 1, "%02X", &value); +@@ -2378,6 +2379,7 @@ int parsemail(char *mbox, /* file name */ + #endif + if (charset) { + free(charset); ++ charset = NULL; + } + charsetsave[0] = '\0'; + +diff --git src/uudecode.c src/uudecode.c +index 4b4310d..f5a7c20 100644 +--- src/uudecode.c ++++ src/uudecode.c +@@ -75,7 +75,7 @@ int uudecode(FILE *input, /* get file data from (if needed) */ + if (init) { + /* search for header line */ + /* AUDIT biege: BOF in buf! */ +- sprintf(scanfstring, "begin %%o %%%us", sizeof(buf)); ++ sprintf(scanfstring, "begin %%o %%%us", sizeof(buf) -1); + while (2 != sscanf(iptr, scanfstring, &mode, buf)) { + if (!fgets(buf, MAXPATHLEN, input)) { + return 2; |