From: Willem Toorop Date: Thu, 11 Jul 2019 13:29:03 +0000 (+0200) Subject: Leaks in tools X-Git-Tag: release-1.7.1-rc1~12^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d5ffa522301f00d31e2fdf676b14899e466446bc;p=thirdparty%2Fldns.git Leaks in tools --- diff --git a/drill/dnssec.c b/drill/dnssec.c index b8074be0..d4170492 100644 --- a/drill/dnssec.c +++ b/drill/dnssec.c @@ -453,6 +453,7 @@ ldns_nsec3_closest_encloser(ldns_rdf *qname, ldns_rr_type qtype, ldns_rr_list *n } if (ldns_dname_cat(hashed_sname, zone_name) != LDNS_STATUS_OK){ + ldns_rdf_deep_free(hashed_sname); goto done; } diff --git a/examples/ldns-dpa.c b/examples/ldns-dpa.c index 1fc54d31..0a6c0700 100644 --- a/examples/ldns-dpa.c +++ b/examples/ldns-dpa.c @@ -1740,6 +1740,7 @@ parse_match_expression(char *string) free(left_str); if (i >= strlen(str)-1) { result = expr->left; + free_match_expression(expr); goto done; } } else if (str[i] == ')') { @@ -2171,16 +2172,16 @@ printf("timeval: %u ; %u\n", cur_hdr.ts.tv_sec, cur_hdr.ts.tv_usec); if (ldns_str2rdf_a(&src_addr, astr) == LDNS_STATUS_OK) { } - free(astr); } + free(astr); ap = (uint8_t *) &(iptr->ip_dst); astr = malloc(INET_ADDRSTRLEN); if (inet_ntop(AF_INET, ap, astr, INET_ADDRSTRLEN)) { if (ldns_str2rdf_a(&dst_addr, astr) == LDNS_STATUS_OK) { } - free(astr); } + free(astr); ip_hdr_size = (int) iptr->ip_hl * 4; protocol = (uint8_t) iptr->ip_p; @@ -2458,10 +2459,10 @@ parse_match_list(match_counters *counters, char *string) strncpy(substring, &string[lastpos], i - lastpos + 1); substring[i - lastpos] = '\0'; expr = parse_match_expression(substring); + free(substring); if (!expr) { return false; } - free(substring); /* if (expr->op != MATCH_EXPR_LEAF) { fprintf(stderr, "Matchlist can only contain , not a logic expression\n"); @@ -2480,6 +2481,7 @@ parse_match_list(match_counters *counters, char *string) if (!expr) { fprintf(stderr, "Bad match: %s\n", substring); + free(substring); return false; } free(substring); @@ -2522,6 +2524,7 @@ parse_uniques(match_id ids[], size_t *count, char *string) *count = *count + 1; } else { printf("Error parsing match list; unknown match name: %s\n", strpart); + free(str); return false; } free(strpart);