diff options
-rw-r--r-- | src/main.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/main.c b/src/main.c index a48be2437..fcc519245 100644 --- a/src/main.c +++ b/src/main.c @@ -787,17 +787,21 @@ static char *file2memory(FILE *file, long *size) if(file) { while((len = fread(buffer, 1, sizeof(buffer), file))) { if(string) { - newstring = realloc(string, len+stringlen); + newstring = realloc(string, len+stringlen+1); if(newstring) string = newstring; else break; /* no more strings attached! :-) */ } else - string = malloc(len); + string = malloc(len+1); memcpy(&string[stringlen], buffer, len); stringlen+=len; } + if (string) { + /* NUL terminate the buffer in case it's treated as a string later */ + string[stringlen] = 0; + } *size = stringlen; return string; } @@ -3333,7 +3337,7 @@ CURLcode _my_setopt(CURL *curl, const char *name, CURLoption tag, ...) } /* attempt to figure out if it is a string (since the tag numerical doesn't offer this info) and then output it as a string if so */ - else if(pval && isgraph(ptr[0]) && isgraph(ptr[1])) + else if(pval && isgraph(ptr[0]) && isgraph(ptr[1]) && isgraph(ptr[2])) snprintf(value, sizeof(value), "\"%s\"", (char *)ptr); else if(pval) { snprintf(value, sizeof(value), "%p", pval); |