Skip to content
Snippets Groups Projects
Commit 02fc7bb5 authored by Yang Tse's avatar Yang Tse
Browse files

fix OOM handling

parent 9e1294e8
No related branches found
No related tags found
No related merge requests found
......@@ -77,8 +77,9 @@ static Curl_addrinfo *fake_ai(void)
int test(char *URL)
{
CURL *easyh;
struct curl_hash *hp;
CURL *easyh = NULL;
struct curl_hash *hp = NULL;
int result = 0;
if(!strcmp(URL, "check")) {
/* test harness script verifying if this test can run */
......@@ -88,7 +89,8 @@ int test(char *URL)
easyh = curl_easy_init();
if(!easyh) {
fprintf(stdout, "easy handle init failed\n");
return TEST_ERR_MAJOR_BAD;
result = TEST_ERR_MAJOR_BAD;
goto cleanup;
}
fprintf(stdout, "easy handle init OK\n");
......@@ -96,7 +98,8 @@ int test(char *URL)
hp = Curl_mk_dnscache();
if(!hp) {
fprintf(stdout, "hash creation failed\n");
return TEST_ERR_MAJOR_BAD;
result = TEST_ERR_MAJOR_BAD;
goto cleanup;
}
fprintf(stdout, "hash creation OK\n");
......@@ -111,26 +114,36 @@ int test(char *URL)
data_key = aprintf("%s:%d", "dummy", 0);
if(!data_key) {
fprintf(stdout, "data key creation failed\n");
return TEST_ERR_MAJOR_BAD;
result = TEST_ERR_MAJOR_BAD;
goto cleanup;
}
key_len = strlen(data_key);
data_node = calloc(1, sizeof(struct Curl_dns_entry));
if(!data_node) {
fprintf(stdout, "data node creation failed\n");
return TEST_ERR_MAJOR_BAD;
result = TEST_ERR_MAJOR_BAD;
free(data_key);
goto cleanup;
}
data_node->addr = fake_ai();
if(!data_node->addr) {
fprintf(stdout, "actual data creation failed\n");
return TEST_ERR_MAJOR_BAD;
result = TEST_ERR_MAJOR_BAD;
free(data_node);
free(data_key);
goto cleanup;
}
nodep = Curl_hash_add(hp, data_key, key_len+1, (void *)data_node);
if(!nodep) {
fprintf(stdout, "insertion into hash failed\n");
return TEST_ERR_MAJOR_BAD;
result = TEST_ERR_MAJOR_BAD;
Curl_freeaddrinfo(data_node->addr);
free(data_node);
free(data_key);
goto cleanup;
}
free(data_key);
......@@ -138,6 +151,8 @@ int test(char *URL)
#endif /* LIB559 */
/**/
cleanup:
fprintf(stdout, "destroying hash...\n");
Curl_hash_destroy(hp);
fprintf(stdout, "hash destruction OK\n");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment