diff options
Diffstat (limited to 'src')
| -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); | 
