]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Wrap the dynamic FD array into a unique_ptr in Resolver::tryGetSOASerial
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 7 Jul 2017 16:56:17 +0000 (18:56 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 18 Jul 2017 15:38:24 +0000 (17:38 +0200)
pdns/resolver.cc

index 81a3126ec217d5cdc23778d9b6fb4d6e6264fa4f..86b224543cea73b87e5dd34e8b3aca8d14e333bd 100644 (file)
@@ -217,7 +217,7 @@ static int parseResult(MOADNSParser& mdp, const DNSName& origQname, uint16_t ori
 
 bool Resolver::tryGetSOASerial(DNSName *domain, uint32_t *theirSerial, uint32_t *theirInception, uint32_t *theirExpire, uint16_t* id)
 {
-  struct pollfd *fds = new struct pollfd[locals.size()];
+  auto fds = std::unique_ptr<struct pollfd[]>(new struct pollfd[locals.size()]);
   size_t i = 0, k;
   int sock;
 
@@ -226,8 +226,7 @@ bool Resolver::tryGetSOASerial(DNSName *domain, uint32_t *theirSerial, uint32_t
     fds[i].events = POLLIN;
   }
 
-  if (poll(fds, i, 250) < 1) { // wait for 0.25s
-    delete [] fds;
+  if (poll(fds.get(), i, 250) < 1) { // wait for 0.25s
     return false;
   }
 
@@ -241,8 +240,6 @@ bool Resolver::tryGetSOASerial(DNSName *domain, uint32_t *theirSerial, uint32_t
     }
   }
 
-  delete [] fds;
-
   if (sock < 0) return false; // false alarm
 
   int err;