diff options
author | Dan Fandrich <dan@coneharvesters.com> | 2018-03-02 20:51:59 +0100 |
---|---|---|
committer | Dan Fandrich <dan@coneharvesters.com> | 2018-03-02 20:51:59 +0100 |
commit | c87c71b3fea35e23eb2d236278e9956555394fc1 (patch) | |
tree | 6d37e4ae7cb79c265a3adabac204b3f4c158ba82 /tests | |
parent | 24753bcd4821ead4b96650b12e6b47efe11181cb (diff) |
unit1307: proper cleanup on OOM to fix torture tests
Diffstat (limited to 'tests')
-rw-r--r-- | tests/unit/unit1607.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/tests/unit/unit1607.c b/tests/unit/unit1607.c index 3e53d4d20..135030cac 100644 --- a/tests/unit/unit1607.c +++ b/tests/unit/unit1607.c @@ -30,6 +30,12 @@ static struct Curl_easy *easy; struct curl_hash *hostcache; +static void unit_stop(void) +{ + curl_easy_cleanup(easy); + curl_global_cleanup(); +} + static CURLcode unit_setup(void) { int res = CURLE_OK; @@ -37,22 +43,20 @@ static CURLcode unit_setup(void) global_init(CURL_GLOBAL_ALL); easy = curl_easy_init(); - if(!easy) + if(!easy) { + curl_global_cleanup(); return CURLE_OUT_OF_MEMORY; + } hostcache = Curl_global_host_cache_init(); - if(!hostcache) + if(!hostcache) { + unit_stop(); return CURLE_OUT_OF_MEMORY; + } return res; } -static void unit_stop(void) -{ - curl_easy_cleanup(easy); - curl_global_cleanup(); -} - struct testcase { /* host:port:address[,address]... */ const char *optval; @@ -128,11 +132,17 @@ UNITTEST_START easy->dns.hostcachetype = HCACHE_GLOBAL; list = curl_slist_append(NULL, tests[i].optval); + if(!list) + goto unit_test_abort; curl_easy_setopt(easy, CURLOPT_RESOLVE, list); Curl_loadhostpairs(easy); entry_id = (void *)aprintf("%s:%d", tests[i].host, tests[i].port); + if(!entry_id) { + curl_slist_free_all(list); + goto unit_test_abort; + } dns = Curl_hash_pick(easy->dns.hostcache, entry_id, strlen(entry_id) + 1); free(entry_id); entry_id = NULL; |