]> granicus.if.org Git - curl/commitdiff
http2: fix memory leaks on error-path
authorDaniel Stenberg <daniel@haxx.se>
Fri, 14 Sep 2018 09:16:26 +0000 (11:16 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Sun, 16 Sep 2018 21:22:15 +0000 (23:22 +0200)
lib/http2.c

index f6d2672c89f7c858f9f85793512c6b89b7aa3bef..7706e94591c2a16463e49d027a8e0890becd0072 100644 (file)
@@ -2091,8 +2091,11 @@ CURLcode Curl_http2_setup(struct connectdata *conn)
 
   stream->stream_id = -1;
 
-  if(!stream->header_recvbuf)
+  if(!stream->header_recvbuf) {
     stream->header_recvbuf = Curl_add_buffer_init();
+    if(!stream->header_recvbuf)
+      return CURLE_OUT_OF_MEMORY;
+  }
 
   if((conn->handler == &Curl_handler_http2_ssl) ||
      (conn->handler == &Curl_handler_http2))
@@ -2104,8 +2107,11 @@ CURLcode Curl_http2_setup(struct connectdata *conn)
     conn->handler = &Curl_handler_http2;
 
   result = Curl_http2_init(conn);
-  if(result)
+  if(result) {
+    Curl_add_buffer_free(stream->header_recvbuf);
+    stream->header_recvbuf = NULL;
     return result;
+  }
 
   infof(conn->data, "Using HTTP2, server supports multi-use\n");
   stream->upload_left = 0;