Index: contrib/ldns/dnssec_zone.c =================================================================== --- contrib/ldns/dnssec_zone.c +++ contrib/ldns/dnssec_zone.c @@ -701,6 +701,7 @@ newzone = NULL; } else { ldns_dnssec_zone_free(newzone); + newzone = NULL; } error: Index: contrib/ldns/host2str.c =================================================================== --- contrib/ldns/host2str.c +++ contrib/ldns/host2str.c @@ -1088,6 +1088,7 @@ if(!gateway_data) return LDNS_STATUS_MEM_ERR; if (ldns_rdf_size(rdf) < offset + LDNS_IP4ADDRLEN) { + LDNS_FREE(gateway_data); return LDNS_STATUS_ERR; } memcpy(gateway_data, &data[offset], LDNS_IP4ADDRLEN); @@ -1104,6 +1105,7 @@ if(!gateway_data) return LDNS_STATUS_MEM_ERR; if (ldns_rdf_size(rdf) < offset + LDNS_IP6ADDRLEN) { + LDNS_FREE(gateway_data); return LDNS_STATUS_ERR; } memcpy(gateway_data, &data[offset], LDNS_IP6ADDRLEN); Index: contrib/ldns/radix.c =================================================================== --- contrib/ldns/radix.c +++ contrib/ldns/radix.c @@ -1120,12 +1120,15 @@ if (array->len - common_len > 1) { if (!ldns_radix_prefix_remainder(common_len+1, array->str, array->len, &s1, &l1)) { + LDNS_FREE(common); return 0; } } if (strlen_to_add - common_len > 1) { if (!ldns_radix_prefix_remainder(common_len+1, str_to_add, strlen_to_add, &s2, &l2)) { + LDNS_FREE(common); + LDNS_FREE(s1); return 0; } } Index: contrib/ldns/resolver.c =================================================================== --- contrib/ldns/resolver.c +++ contrib/ldns/resolver.c @@ -766,6 +766,7 @@ /* default domain dname */ gtr = ldns_fget_token_l(myfp, word, LDNS_PARSE_NORMAL, 0, line_nr); if (gtr == 0) { + ldns_resolver_deep_free(r); if(!fp) fclose(myfp); return LDNS_STATUS_SYNTAX_MISSING_VALUE_ERR; } @@ -788,6 +789,7 @@ /* NS aaaa or a record */ gtr = ldns_fget_token_l(myfp, word, LDNS_PARSE_NORMAL, 0, line_nr); if (gtr == 0) { + ldns_resolver_deep_free(r); if(!fp) fclose(myfp); return LDNS_STATUS_SYNTAX_MISSING_VALUE_ERR; } Index: contrib/ldns/str2host.c =================================================================== --- contrib/ldns/str2host.c +++ contrib/ldns/str2host.c @@ -445,6 +445,7 @@ *++dp = ch; } if (! str) { + LDNS_FREE(data); return LDNS_STATUS_SYNTAX_BAD_ESCAPE; } length = (size_t)(dp - data); @@ -1456,6 +1457,7 @@ } } if (! str) { + LDNS_FREE(data); return LDNS_STATUS_SYNTAX_BAD_ESCAPE; } length = (size_t)(dp - data);