]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
remove some duplicate ;'s
authorBert Hubert <bert.hubert@netherlabs.nl>
Thu, 2 Mar 2006 19:32:49 +0000 (19:32 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Thu, 2 Mar 2006 19:32:49 +0000 (19:32 +0000)
teach dynhandler to reject non-ip address parameters to notify-host
plus defense in depth, make powerdns not exit if asked to notify non-ip address
Close ticket 24

git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@565 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/communicator.cc
pdns/dnspacket.cc
pdns/dynhandler.cc
pdns/resolver.cc

index 48b6c74b42d44ca900f2acbf6290d6d89494aa20..42021ddb9bc0b327897c532f276f0d1354e376b3 100644 (file)
@@ -317,8 +317,13 @@ int CommunicatorClass::doNotifications()
   bool purged;
   while(d_nq.getOne(domain, ip, &id, purged)) {
     if(!purged) {
-      d_nresolver.notify(d_nsock,domain,ip,id);
-      drillHole(domain,ip);
+      try {
+       d_nresolver.notify(d_nsock, domain, ip, id);
+       drillHole(domain, ip);
+      }
+      catch(ResolverException &re) {
+       L<<Logger::Error<<"Error trying to resolve '"+ip+"' for notifying '"+domain+"' to server: "+re.reason<<endl;
+      }
     }
     else
       L<<Logger::Error<<Logger::NTLog<<"Notification for "<<domain<<" to "<<ip<<" failed after retries"<<endl;
@@ -393,7 +398,7 @@ void CommunicatorClass::makeNotifySocket()
 
 void CommunicatorClass::notify(const string &domain, const string &ip)
 {
-  d_nq.add(domain,ip);
+  d_nq.add(domain, ip);
 
   d_any_sem.post();
 }
index ffff05f07a8b1462fb54c00a34d894ed159134b3..3ec0499dd0c941f6c77d5d8d20bf5a0aa5523944 100644 (file)
@@ -433,9 +433,9 @@ void DNSPacket::fillSOAData(const string &content, SOAData &data)
   // fill out data with some plausible defaults:
   // 10800 3600 604800 3600
   data.serial=0;
-  data.refresh=arg().asNum("soa-refresh-default");;
-  data.retry=arg().asNum("soa-retry-default");;
-  data.expire=arg().asNum("soa-expire-default");;
+  data.refresh=arg().asNum("soa-refresh-default");
+  data.retry=arg().asNum("soa-retry-default");
+  data.expire=arg().asNum("soa-expire-default");
   data.default_ttl=arg().asNum("soa-minimum-ttl");
 
   vector<string>parts;
index bba95a7d34ccb93ba5454c93e5e7baed25aa8848..3bdb45c5131310c9d14cc1e08f2caa4db912064e 100644 (file)
@@ -203,6 +203,11 @@ string DLNotifyHostHandler(const vector<string>&parts, Utility::pid_t ppid)
   ostringstream os;
   if(parts.size()!=3)
     return "syntax: notify-host domain ip";
+
+  struct in_addr inp;
+  if(!Utility::inet_aton(parts[2].c_str(),&inp))
+    return "Unable to convert '"+parts[2]+"' to an IP address";
+
   L<<Logger::Warning<<"Notification request to host "<<parts[2]<<" for domain '"<<parts[1]<<"' received"<<endl;
   Communicator.notify(parts[1],parts[2]);
   return "Added to queue";
index d95c2c4dfce03a2167329f47ff65d05161da46cd..db18111a1c65781fc92a9fd11e3ad46efba1b393 100644 (file)
@@ -138,7 +138,8 @@ int Resolver::notify(int sock, const string &domain, const string &ip, uint16_t
   p.spoofID(id);
 
   struct in_addr inp;
-  Utility::inet_aton(ip.c_str(),&inp);
+  if(!Utility::inet_aton(ip.c_str(),&inp))
+    throw ResolverException("Unable to convert '"+ip+"' to an IP address");
 
   struct sockaddr_in toaddr;
   toaddr.sin_addr.s_addr=inp.s_addr;