mirror of
https://github.com/moparisthebest/curl
synced 2024-12-23 16:48:49 -05:00
lib1591: free memory properly on OOM, in the trailers callback
Detected by torture tests. Closes #4720
This commit is contained in:
parent
571f2c81d1
commit
38797e8811
@ -5,7 +5,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2019, 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
|
||||||
@ -50,12 +50,25 @@ static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
|
|||||||
return amount;
|
return amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* carefully not leak memory on OOM
|
||||||
|
*/
|
||||||
static int trailers_callback(struct curl_slist **list, void *userdata)
|
static int trailers_callback(struct curl_slist **list, void *userdata)
|
||||||
{
|
{
|
||||||
|
struct curl_slist *nlist = NULL;
|
||||||
|
struct curl_slist *nlist2 = NULL;
|
||||||
(void)userdata;
|
(void)userdata;
|
||||||
*list = curl_slist_append(*list, "my-super-awesome-trailer: trail1");
|
nlist = curl_slist_append(*list, "my-super-awesome-trailer: trail1");
|
||||||
*list = curl_slist_append(*list, "my-other-awesome-trailer: trail2");
|
if(nlist)
|
||||||
return CURL_TRAILERFUNC_OK;
|
nlist2 = curl_slist_append(nlist, "my-other-awesome-trailer: trail2");
|
||||||
|
if(nlist2) {
|
||||||
|
*list = nlist2;
|
||||||
|
return CURL_TRAILERFUNC_OK;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
curl_slist_free_all(nlist);
|
||||||
|
return CURL_TRAILERFUNC_ABORT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int test(char *URL)
|
int test(char *URL)
|
||||||
|
Loading…
Reference in New Issue
Block a user