]> granicus.if.org Git - curl/commitdiff
check malloc() return code
authorDaniel Stenberg <daniel@haxx.se>
Tue, 4 May 2004 13:39:24 +0000 (13:39 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 4 May 2004 13:39:24 +0000 (13:39 +0000)
lib/http.c

index b8243b35a7b49f3c31fd38cccdaaec433a970a50..cc0ef7f8c2ae04ad9f0e738538152243ec49c4f5 100644 (file)
@@ -1430,19 +1430,22 @@ CURLcode Curl_http(struct connectdata *conn)
         char *newurl;
         
         newurl = malloc(urllen + newlen - currlen + 1);
-
-        /* copy the part before the host name */
-        memcpy(newurl, url, ptr - url);
-        /* append the new host name instead of the old */
-        memcpy(newurl + (ptr - url), conn->host.name, newlen);
-        /* append the piece after the host name */
-        memcpy(newurl + newlen + (ptr - url),
-               ptr + currlen, /* copy the trailing zero byte too */
-               urllen - (ptr-url) - currlen + 1);
-        if(data->change.url_alloc)
-          free(data->change.url);
-        data->change.url = newurl;
-        data->change.url_alloc = TRUE;
+        if(newurl) {
+          /* copy the part before the host name */
+          memcpy(newurl, url, ptr - url);
+          /* append the new host name instead of the old */
+          memcpy(newurl + (ptr - url), conn->host.name, newlen);
+          /* append the piece after the host name */
+          memcpy(newurl + newlen + (ptr - url),
+                 ptr + currlen, /* copy the trailing zero byte too */
+                 urllen - (ptr-url) - currlen + 1);
+          if(data->change.url_alloc)
+            free(data->change.url);
+          data->change.url = newurl;
+          data->change.url_alloc = TRUE;
+        }
+        else
+          return CURLE_OUT_OF_MEMORY;
       }
     }
     ppath = data->change.url;