]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
Fixed a couple of problems detected by valgrind in test cases 181 & 216
authorDan Fandrich <dan@coneharvesters.com>
Tue, 6 Mar 2007 19:55:11 +0000 (19:55 +0000)
committerDan Fandrich <dan@coneharvesters.com>
Tue, 6 Mar 2007 19:55:11 +0000 (19:55 +0000)
src/main.c

index a48be2437a7f3805e3aca39d70ad2c12bf349bcd..fcc5192457ccac6c1ada75a8c4411ff4fc71fe9e 100644 (file)
@@ -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);