From: Bert Hubert Date: Mon, 11 Jul 2005 18:27:36 +0000 (+0000) Subject: fix TCP related crashes due to HUUUUGE daum.net records (3.5kbyte!) X-Git-Tag: pdns-2.9.18~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=66ab6a637bc4dfd1fafc90126d7fd00b7b9f1924;p=thirdparty%2Fpdns.git fix TCP related crashes due to HUUUUGE daum.net records (3.5kbyte!) git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@440 d19b8d6e-7fed-0310-83ef-9ca221ded41b --- diff --git a/pdns/lwres.cc b/pdns/lwres.cc index 7068bcb9ff..0f60d57bb5 100644 --- a/pdns/lwres.cc +++ b/pdns/lwres.cc @@ -91,12 +91,13 @@ int LWRes::asyncresolve(const string &ip, const char *domain, int type, bool doT ret=arecvfrom(reinterpret_cast(d_buf), d_bufsize-1,0,(struct sockaddr*)(&toaddr), &addrlen, &d_len, p.d.id); } else { + // cerr<<"do tcp"< d_bufsize) { + d_bufsize=len; + delete[] d_buf; + d_buf = new unsigned char[d_bufsize]; + } memcpy(d_buf, packet.c_str(), len); d_len=len; ret=1; diff --git a/pdns/pdns_recursor.cc b/pdns/pdns_recursor.cc index fbc94d7c50..eb1fa71bd5 100644 --- a/pdns/pdns_recursor.cc +++ b/pdns/pdns_recursor.cc @@ -246,8 +246,9 @@ void startDoResolve(void *p) const char *buffer=R->getData(); if(!R->d_tcp) { - if(R->len > 512) + if(R->len > 512) { R->truncate(512); + } sendto(R->getSocket(),buffer,R->len,0,(struct sockaddr *)(R->remote),R->d_socklen); } diff --git a/pdns/syncres.cc b/pdns/syncres.cc index 7a66b8c055..91dddf97bb 100644 --- a/pdns/syncres.cc +++ b/pdns/syncres.cc @@ -411,7 +411,7 @@ int SyncRes::doResolveAt(set nameservers, string auth, const string &qna } result=d_lwr.result(); - + if(d_lwr.d_tcbit) { if(!doTCP) { doTCP=true;