Changeset 451
- Timestamp:
- 07/18/05 08:33:42 (8 years ago)
- Files:
-
- 1 modified
-
trunk/pdns/pdns/packethandler.cc (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/pdns/pdns/packethandler.cc
r420 r451 491 491 492 492 493 494 bool validDNSName(const string &name) 495 { 496 string::size_type pos, length=name.length(); 497 char c; 498 for(pos=0; pos < length; ++pos) { 499 c=name[pos]; 500 if(!((c >= 'a' && c <= 'z') || 501 (c >= 'A' && c <= 'Z') || 502 (c >= '0' && c <= '9') || 503 c =='-' || c == '_' || c=='*' || c=='.')) 504 return false; 505 } 506 return true; 507 } 508 493 509 //! Called by the Distributor to ask a question. Returns 0 in case of an error 494 510 DNSPacket *PacketHandler::question(DNSPacket *p) … … 518 534 // XXX FIXME do this in DNSPacket::parse ? 519 535 520 if(! p->qdomain.empty() && p->qdomain.find_first_of("%|")!=string::npos) {536 if(!validDNSName(p->qdomain)) { 521 537 L<<Logger::Error<<"Received a malformed qdomain from "<<p->getRemote()<<", '"<<p->qdomain<<"': dropping"<<endl; 522 538 S.inc("corrupt-packets");