]> granicus.if.org Git - curl/commitdiff
http2: Fixed OOM handling in upgrade request
authorDan Fandrich <dan@coneharvesters.com>
Wed, 1 Nov 2017 13:36:15 +0000 (14:36 +0100)
committerDan Fandrich <dan@coneharvesters.com>
Wed, 1 Nov 2017 13:37:01 +0000 (14:37 +0100)
This caused the torture tests on test 1800 to fail.

lib/http2.c

index 3a9e3be9a030a861c88e1f61cec581c5134455f6..5518a70ab6341b582b44f09a63aa72bbe907ff2d 100644 (file)
@@ -1183,14 +1183,17 @@ CURLcode Curl_http2_request_upgrade(Curl_send_buffer *req,
                                          httpc->local_settings_num);
   if(!binlen) {
     failf(conn->data, "nghttp2 unexpectedly failed on pack_settings_payload");
+    Curl_add_buffer_free(req);
     return CURLE_FAILED_INIT;
   }
   conn->proto.httpc.binlen = binlen;
 
   result = Curl_base64url_encode(conn->data, (const char *)binsettings, binlen,
                                  &base64, &blen);
-  if(result)
+  if(result) {
+    Curl_add_buffer_free(req);
     return result;
+  }
 
   result = Curl_add_bufferf(req,
                             "Connection: Upgrade, HTTP2-Settings\r\n"