X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Fdkim.c;h=065170444bb8494a19b5a5c88f25eb8305ab9622;hb=da40b1ec6b91ccd3faa4def9e5cff05ec51ca573;hp=dd999ff5b6a95a15f1b0ed47908629a1b47ba6dc;hpb=9fa4d5b45f70b36a46c0d04381a5e05cb39ae3e9;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/dkim.c b/src/src/dkim.c index dd999ff5b..065170444 100644 --- a/src/src/dkim.c +++ b/src/src/dkim.c @@ -37,29 +37,28 @@ static const uschar * dkim_collect_error = NULL; -/*XXX the caller only uses the first record if we return multiple. +/* Look up the DKIM record in DNS for the given hostname. +Will use the first found if there are multiple. +The return string is tainted, having come from off-site. */ uschar * -dkim_exim_query_dns_txt(uschar * name) +dkim_exim_query_dns_txt(const uschar * name) { -/*XXX need to always alloc the dnsa, from tainted mem. -Then, we hope, the answers will be tainted */ - -dns_answer dnsa; +dns_answer * dnsa = store_get_dns_answer(); dns_scan dnss; rmark reset_point = store_mark(); gstring * g = NULL; lookup_dnssec_authenticated = NULL; -if (dns_lookup(&dnsa, name, T_TXT, NULL) != DNS_SUCCEED) +if (dns_lookup(dnsa, name, T_TXT, NULL) != DNS_SUCCEED) return NULL; /*XXX better error detail? logging? */ /* Search for TXT record */ -for (dns_record * rr = dns_next_rr(&dnsa, &dnss, RESET_ANSWERS); +for (dns_record * rr = dns_next_rr(dnsa, &dnss, RESET_ANSWERS); rr; - rr = dns_next_rr(&dnsa, &dnss, RESET_NEXT)) + rr = dns_next_rr(dnsa, &dnss, RESET_NEXT)) if (rr->type == T_TXT) { int rr_offset = 0;