]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Check if we have room before adding zero ecs scope ENDS value
authorOtto <otto.moerbeek@open-xchange.com>
Tue, 11 May 2021 11:48:27 +0000 (13:48 +0200)
committerOtto <otto.moerbeek@open-xchange.com>
Tue, 11 May 2021 11:48:27 +0000 (13:48 +0200)
pdns/pdns_recursor.cc

index 93d77b98fb5834ce9387ae5e0e24fec1903bb896..22519cac2081d59d566b1fe5933933f46757636a 100644 (file)
@@ -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) {