increased maximum RR of a kind limit check
authorbeware <beware@bircd.org>
Mon, 4 Apr 2011 14:58:41 +0000 (14:58 +0000)
committerbeware <beware@bircd.org>
Mon, 4 Apr 2011 14:58:41 +0000 (14:58 +0000)
git-svn-id: file:///svnroot/lcore/trunk@99 b1de8a11-f9be-4011-bde0-cc7ace90066a

dnscore.pas

index fa9eee2fc0a76c40a6eafdf764ab6e6b69ebe33f..3a9596f90317c88445b8cdb184503a73c97b9d1b 100644 (file)
@@ -106,7 +106,10 @@ const
   querytype_txt=16;\r
   querytype_spf=99;\r
   maxrecursion=50;\r
   querytype_txt=16;\r
   querytype_spf=99;\r
   maxrecursion=50;\r
-  maxrrofakind=20;\r
+  maxrrofakind=32;\r
+  {the maximum number of RR of a kind of purely an extra sanity check and could be omitted.\r
+  before, i set it to 20, but valid replies can have more. dnscore only does udp requests,\r
+  and ordinary DNS, so up to 512 bytes. the maximum number of A records that fits seems to be 29}\r
 \r
   retryafter=300000; //microseconds must be less than one second;\r
   timeoutlag=1000000000; // penalty value to be treated as lag in the event of a timeout (microseconds)\r
 \r
   retryafter=300000; //microseconds must be less than one second;\r
   timeoutlag=1000000000; // penalty value to be treated as lag in the event of a timeout (microseconds)\r
@@ -502,7 +505,10 @@ begin
     state.numrr2 := 0;\r
     for a := 0 to 3 do begin\r
       state.numrr1[a] := htons(state.recvpacket.rrcount[a]);\r
     state.numrr2 := 0;\r
     for a := 0 to 3 do begin\r
       state.numrr1[a] := htons(state.recvpacket.rrcount[a]);\r
-      if state.numrr1[a] > maxrrofakind then goto failure;\r
+      if state.numrr1[a] > maxrrofakind then begin\r
+        failurereason := 'exceeded maximum RR of a kind';\r
+        goto failure;\r
+      end;\r
       inc(state.numrr2,state.numrr1[a]);\r
     end;\r
 \r
       inc(state.numrr2,state.numrr1[a]);\r
     end;\r
 \r