From: Dan Fandrich <dan@coneharvesters.com>
Date: Wed, 9 Jul 2008 18:33:35 +0000 (+0000)
Subject: Fixed an OOM handling problem that cause test 11 to fail the torture test.
X-Git-Tag: cares-1_5_3~382
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d4b253ba3ec87e1d703910bdb278d142e6e6abf8;p=curl

Fixed an OOM handling problem that cause test 11 to fail the torture test.
---

diff --git a/CHANGES b/CHANGES
index 475b0bad9..8b9c8b323 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,9 @@
 
                                   Changelog
 
+Daniel Fandrich (9 Jul 2008)
+- Fixed an OOM handling problem that cause test 11 to fail the torture test.
+
 Daniel Fandrich (8 Jul 2008)
 - Fixed test 554 to pass the torture test.
 
diff --git a/lib/transfer.c b/lib/transfer.c
index b45be0a56..11202af80 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -2398,17 +2398,21 @@ CURLcode Curl_perform(struct SessionHandle *data)
             if(data->req.newurl) {
               follow = FOLLOW_REDIR;
               newurl = strdup(data->req.newurl);
+              if (!newurl)
+                res = CURLE_OUT_OF_MEMORY;
             }
             else if(data->req.location) {
               follow = FOLLOW_FAKE;
               newurl = strdup(data->req.location);
+              if (!newurl)
+                res = CURLE_OUT_OF_MEMORY;
             }
           }
 
           /* in the above cases where 'newurl' gets assigned, we have a fresh
            * allocated memory pointed to */
         }
-        else {
+        if(res != CURLE_OK) {
           /* The transfer phase returned error, we mark the connection to get
            * closed to prevent being re-used. This is becasue we can't
            * possibly know if the connection is in a good shape or not now. */