]> granicus.if.org Git - pdns/commitdiff
Make sure tinydnsbackend does not choke on request names > 64 bytes. Reported by...
authorPeter van Dijk <peter.van.dijk@netherlabs.nl>
Tue, 22 May 2012 05:37:49 +0000 (05:37 +0000)
committerPeter van Dijk <peter.van.dijk@netherlabs.nl>
Tue, 22 May 2012 05:37:49 +0000 (05:37 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@2622 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/dnslabel.cc

index 4fa2938055af848710689ff53efcb4f94c1317e1..6dffc81e6149a2e614dff8fecf6a44a57d5ca451 100644 (file)
@@ -77,20 +77,15 @@ DNSLabel::DNSLabel(const char* human)
        for(p=human; *p; ++p) {
                if(*p=='.') {
                        char labelLen = p - labelStart;
-                       // cerr<<"input, labelLen: "<<(int)labelLen<<endl;
                        appendChar(labelLen);
-                       
-                       memcpy(d_storage+d_fulllen, labelStart, labelLen);
-                       d_fulllen += labelLen;
+                       appendRange(labelStart, labelLen);
                        labelStart=p+1;
                }
        }
        if(labelStart != p) { // human input did not end on a trailing dot
                char labelLen = p - labelStart;
-               // cerr<<"trailing input, labelLen: "<<(int)labelLen<<endl;
-               d_storage[d_fulllen++]= labelLen;
-               memcpy(d_storage + d_fulllen, labelStart, labelLen);
-               d_fulllen += labelLen;  
+               appendChar(labelLen);
+               appendRange(labelStart, labelLen);
        }
        d_storage[d_fulllen++]=0;
 }