From: Mark Andrews Date: Wed, 24 Nov 2021 00:03:19 +0000 (+1100) Subject: Do not convert ISC_R_NOSPACE to DNS_R_SERVFAIL too early X-Git-Tag: v9.17.21~17^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=08f1cba096243cd14041731b7ea1ad45e54e87b0;p=thirdparty%2Fbind9.git Do not convert ISC_R_NOSPACE to DNS_R_SERVFAIL too early The parsing loop needs to process ISC_R_NOSPACE to properly size the buffer. If result is still ISC_R_NOSPACE at the end of the parsing loop set result to DNS_R_SERVFAIL. --- diff --git a/lib/dns/sdlz.c b/lib/dns/sdlz.c index 5476ef391f0..5eea5cb6b96 100644 --- a/lib/dns/sdlz.c +++ b/lib/dns/sdlz.c @@ -1852,7 +1852,6 @@ dns_sdlz_putrr(dns_sdlzlookup_t *lookup, const char *type, dns_ttl_t ttl, mctx, rdatabuf, &lookup->callbacks); if (result != ISC_R_SUCCESS) { isc_buffer_free(&rdatabuf); - result = DNS_R_SERVFAIL; } if (size >= 65535) { break; @@ -1864,6 +1863,7 @@ dns_sdlz_putrr(dns_sdlzlookup_t *lookup, const char *type, dns_ttl_t ttl, } while (result == ISC_R_NOSPACE); if (result != ISC_R_SUCCESS) { + result = DNS_R_SERVFAIL; goto failure; }