From: Otto Date: Tue, 11 May 2021 11:48:27 +0000 (+0200) Subject: Check if we have room before adding zero ecs scope ENDS value X-Git-Tag: rec-4.4.4^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=722f8d0736d6a10a230ed9de7ce39ed49f75341b;p=thirdparty%2Fpdns.git Check if we have room before adding zero ecs scope ENDS value --- diff --git a/pdns/pdns_recursor.cc b/pdns/pdns_recursor.cc index 93d77b98fb..22519cac20 100644 --- a/pdns/pdns_recursor.cc +++ b/pdns/pdns_recursor.cc @@ -1782,8 +1782,11 @@ static void startDoResolve(void *p) sa.reset(); sa.sin4.sin_family = eo.source.getNetwork().sin4.sin_family; eo.scope = Netmask(sa, 0); + auto ecsPayload = makeEDNSSubnetOptsString(eo); - returnedEdnsOptions.push_back(make_pair(EDNSOptionCode::ECS, makeEDNSSubnetOptsString(eo))); + if (pw.size() < maxanswersize && (maxanswersize - pw.size()) >= (2 + 2 + ecsPayload.size())) { + returnedEdnsOptions.push_back(make_pair(EDNSOptionCode::ECS, std::move(ecsPayload))); + } } if (haveEDNS) {