mirror of https://github.com/getdnsapi/getdns.git
Fix some memory leaks
This commit is contained in:
parent
2d1ad47f07
commit
2db5fdbe0c
|
@ -220,8 +220,11 @@ getdns_list_copy(struct getdns_list *srclist, struct getdns_list **dstlist)
|
||||||
&((*dstlist)->items[i].data.dict));
|
&((*dstlist)->items[i].data.dict));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
retval = GETDNS_RETURN_GENERIC_ERROR;
|
retval = GETDNS_RETURN_GENERIC_ERROR;
|
||||||
|
getdns_list_destroy(*dstlist);
|
||||||
|
*dstlist = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if(retval != GETDNS_RETURN_GOOD)
|
if(retval != GETDNS_RETURN_GOOD)
|
||||||
break;
|
break;
|
||||||
|
@ -276,6 +279,10 @@ getdns_list_destroy(struct getdns_list *list)
|
||||||
free(list->items[i].data.bindata->data);
|
free(list->items[i].data.bindata->data);
|
||||||
free(list->items[i].data.bindata);
|
free(list->items[i].data.bindata);
|
||||||
}
|
}
|
||||||
|
else if(list->items[i].dtype == t_dict)
|
||||||
|
{
|
||||||
|
getdns_dict_destroy(list->items[i].data.dict);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
free(list->items);
|
free(list->items);
|
||||||
}
|
}
|
||||||
|
|
|
@ -146,6 +146,7 @@ void
|
||||||
getdns_free_sync_request_memory(
|
getdns_free_sync_request_memory(
|
||||||
struct getdns_dict *response
|
struct getdns_dict *response
|
||||||
)
|
)
|
||||||
{ UNUSED_PARAM(response); }
|
{
|
||||||
|
getdns_dict_destroy(response);
|
||||||
|
}
|
||||||
/* getdns_core_sync.c */
|
/* getdns_core_sync.c */
|
||||||
|
|
|
@ -49,6 +49,7 @@ void
|
||||||
tstmsg_prog_end()
|
tstmsg_prog_end()
|
||||||
{
|
{
|
||||||
printf("TESTPROG %s END\n", testprog);
|
printf("TESTPROG %s END\n", testprog);
|
||||||
|
free(testprog);
|
||||||
} /* tstmsg_prog_end */
|
} /* tstmsg_prog_end */
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -208,12 +208,14 @@ tst_getnames(void)
|
||||||
|
|
||||||
tstmsg_case_msg("getdns_dict_get_names(NULL, &list)");
|
tstmsg_case_msg("getdns_dict_get_names(NULL, &list)");
|
||||||
getdns_dict_get_names(NULL, &list);
|
getdns_dict_get_names(NULL, &list);
|
||||||
|
getdns_list_destroy(list);
|
||||||
|
|
||||||
tstmsg_case_msg("getdns_dict_get_names(dict, NULL)");
|
tstmsg_case_msg("getdns_dict_get_names(dict, NULL)");
|
||||||
getdns_dict_get_names(dict, NULL);
|
getdns_dict_get_names(dict, NULL);
|
||||||
|
|
||||||
tstmsg_case_msg("getdns_dict_get_names(dict, &list), empty dictionary");
|
tstmsg_case_msg("getdns_dict_get_names(dict, &list), empty dictionary");
|
||||||
getdns_dict_get_names(dict, &list);
|
getdns_dict_get_names(dict, &list);
|
||||||
|
getdns_list_destroy(list);
|
||||||
|
|
||||||
/* legit use case, add items out of order to exercise tree */
|
/* legit use case, add items out of order to exercise tree */
|
||||||
/* TODO: add elements of type dict, bindata, list to the dict */
|
/* TODO: add elements of type dict, bindata, list to the dict */
|
||||||
|
@ -263,6 +265,7 @@ tst_getnames(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
getdns_dict_destroy(dict);
|
getdns_dict_destroy(dict);
|
||||||
|
getdns_list_destroy(list);
|
||||||
|
|
||||||
tstmsg_case_end();
|
tstmsg_case_end();
|
||||||
} /* tst_getnames */
|
} /* tst_getnames */
|
||||||
|
@ -452,6 +455,7 @@ tst_copy(void)
|
||||||
getdns_dict_copy(NULL, NULL);
|
getdns_dict_copy(NULL, NULL);
|
||||||
dict1 = getdns_dict_create();
|
dict1 = getdns_dict_create();
|
||||||
getdns_dict_copy(dict1, &dict2);
|
getdns_dict_copy(dict1, &dict2);
|
||||||
|
getdns_dict_destroy(dict2);
|
||||||
getdns_dict_copy(NULL, &dict1);
|
getdns_dict_copy(NULL, &dict1);
|
||||||
|
|
||||||
tstmsg_case_msg("dict1 populate");
|
tstmsg_case_msg("dict1 populate");
|
||||||
|
|
|
@ -396,7 +396,7 @@ static char* get_canonical_name(const char* name) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
char* result = convert_rdf_to_str(rdf);
|
char* result = convert_rdf_to_str(rdf);
|
||||||
ldns_rdf_free(rdf);
|
ldns_rdf_deep_free(rdf);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -406,7 +406,7 @@ getdns_dict *create_getdns_response(struct getdns_dns_req* completed_request) {
|
||||||
getdns_list* just_addrs = NULL;
|
getdns_list* just_addrs = NULL;
|
||||||
getdns_list* replies_tree = getdns_list_create();
|
getdns_list* replies_tree = getdns_list_create();
|
||||||
getdns_network_req *netreq = completed_request->first_req;
|
getdns_network_req *netreq = completed_request->first_req;
|
||||||
|
char* canonical_name = NULL;
|
||||||
|
|
||||||
int r = 0;
|
int r = 0;
|
||||||
|
|
||||||
|
@ -416,7 +416,9 @@ getdns_dict *create_getdns_response(struct getdns_dns_req* completed_request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_STATUS, GETDNS_RESPSTATUS_GOOD);
|
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_STATUS, GETDNS_RESPSTATUS_GOOD);
|
||||||
r |= getdns_dict_util_set_string(result, GETDNS_STR_KEY_CANONICAL_NM, get_canonical_name(completed_request->name));
|
canonical_name = get_canonical_name(completed_request->name);
|
||||||
|
r |= getdns_dict_util_set_string(result, GETDNS_STR_KEY_CANONICAL_NM, canonical_name);
|
||||||
|
free(canonical_name);
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_ANSWER_TYPE, GETDNS_NAMETYPE_DNS);
|
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_ANSWER_TYPE, GETDNS_NAMETYPE_DNS);
|
||||||
|
|
||||||
while (netreq) {
|
while (netreq) {
|
||||||
|
|
Loading…
Reference in New Issue