summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Fandrich <dan@coneharvesters.com>2018-03-02 20:51:59 +0100
committerDan Fandrich <dan@coneharvesters.com>2018-03-02 20:51:59 +0100
commitc87c71b3fea35e23eb2d236278e9956555394fc1 (patch)
tree6d37e4ae7cb79c265a3adabac204b3f4c158ba82
parent24753bcd4821ead4b96650b12e6b47efe11181cb (diff)
downloadcurl-c87c71b3fea35e23eb2d236278e9956555394fc1.tar.gz
unit1307: proper cleanup on OOM to fix torture tests
-rw-r--r--tests/unit/unit1607.c26
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;