mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
http2: fix OOM crash
torture mode with test 1021 found it
This commit is contained in:
parent
7b3b4722be
commit
65ca030513
@ -2134,12 +2134,15 @@ CURLcode Curl_http2_switched(struct connectdata *conn,
|
|||||||
return CURLE_OK;
|
return CURLE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Curl_http2_add_child(struct Curl_easy *parent, struct Curl_easy *child,
|
CURLcode Curl_http2_add_child(struct Curl_easy *parent,
|
||||||
bool exclusive)
|
struct Curl_easy *child,
|
||||||
|
bool exclusive)
|
||||||
{
|
{
|
||||||
if(parent) {
|
if(parent) {
|
||||||
struct Curl_http2_dep **tail;
|
struct Curl_http2_dep **tail;
|
||||||
struct Curl_http2_dep *dep = calloc(1, sizeof(struct Curl_http2_dep));
|
struct Curl_http2_dep *dep = calloc(1, sizeof(struct Curl_http2_dep));
|
||||||
|
if(!dep)
|
||||||
|
return CURLE_OUT_OF_MEMORY;
|
||||||
dep->data = child;
|
dep->data = child;
|
||||||
|
|
||||||
if(parent->set.stream_dependents && exclusive) {
|
if(parent->set.stream_dependents && exclusive) {
|
||||||
@ -2170,6 +2173,7 @@ void Curl_http2_add_child(struct Curl_easy *parent, struct Curl_easy *child,
|
|||||||
|
|
||||||
child->set.stream_depends_on = parent;
|
child->set.stream_depends_on = parent;
|
||||||
child->set.stream_depends_e = exclusive;
|
child->set.stream_depends_e = exclusive;
|
||||||
|
return CURLE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Curl_http2_remove_child(struct Curl_easy *parent, struct Curl_easy *child)
|
void Curl_http2_remove_child(struct Curl_easy *parent, struct Curl_easy *child)
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@ -53,8 +53,9 @@ void Curl_http2_setup_conn(struct connectdata *conn);
|
|||||||
void Curl_http2_setup_req(struct Curl_easy *data);
|
void Curl_http2_setup_req(struct Curl_easy *data);
|
||||||
void Curl_http2_done(struct connectdata *conn, bool premature);
|
void Curl_http2_done(struct connectdata *conn, bool premature);
|
||||||
CURLcode Curl_http2_done_sending(struct connectdata *conn);
|
CURLcode Curl_http2_done_sending(struct connectdata *conn);
|
||||||
void Curl_http2_add_child(struct Curl_easy *parent, struct Curl_easy *child,
|
CURLcode Curl_http2_add_child(struct Curl_easy *parent,
|
||||||
bool exclusive);
|
struct Curl_easy *child,
|
||||||
|
bool exclusive);
|
||||||
void Curl_http2_remove_child(struct Curl_easy *parent,
|
void Curl_http2_remove_child(struct Curl_easy *parent,
|
||||||
struct Curl_easy *child);
|
struct Curl_easy *child);
|
||||||
void Curl_http2_cleanup_dependencies(struct Curl_easy *data);
|
void Curl_http2_cleanup_dependencies(struct Curl_easy *data);
|
||||||
|
Loading…
Reference in New Issue
Block a user