X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Fdkim.c;h=87c9c9197d7c309f463b6f381d1997558efe0a01;hb=a746f186fdd8b3b6561919177b6dd011c2b177e4;hp=a48f1a17af47e42b309e38118484ccee53f2f247;hpb=ee3c2fea18d0c940c2256c6bf041f546c703c375;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/dkim.c b/src/src/dkim.c index a48f1a17a..87c9c9197 100644 --- a/src/src/dkim.c +++ b/src/src/dkim.c @@ -50,11 +50,14 @@ dkim_exim_query_dns_txt(const uschar * name) dns_answer * dnsa = store_get_dns_answer(); dns_scan dnss; rmark reset_point = store_mark(); -gstring * g = NULL; +gstring * g = string_get_tainted(256, TRUE); lookup_dnssec_authenticated = NULL; if (dns_lookup(dnsa, name, T_TXT, NULL) != DNS_SUCCEED) + { + store_free_dns_answer(dnsa); return NULL; /*XXX better error detail? logging? */ + } /* Search for TXT record */ @@ -81,6 +84,7 @@ for (dns_record * rr = dns_next_rr(dnsa, &dnss, RESET_ANSWERS); /* check if this looks like a DKIM record */ if (Ustrncmp(g->s, "v=", 2) != 0 || strncasecmp(CS g->s, "v=dkim", 6) == 0) { + store_free_dns_answer(dnsa); gstring_release_unused(g); return string_from_gstring(g); } @@ -90,6 +94,7 @@ for (dns_record * rr = dns_next_rr(dnsa, &dnss, RESET_ANSWERS); bad: store_reset(reset_point); +store_free_dns_answer(dnsa); return NULL; /*XXX better error detail? logging? */ }