]> granicus.if.org Git - pdns/commitdiff
Remove a VLA in waitForMultiData()
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 23 Mar 2018 09:43:21 +0000 (10:43 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 23 Mar 2018 09:43:21 +0000 (10:43 +0100)
pdns/misc.cc

index b4c6d5cf8bd489544cef083a60b28d5e4c0026cb..11d31f4e85b8a96b67d3e19d493951f283a39f47 100644 (file)
@@ -362,8 +362,8 @@ int waitForMultiData(const set<int>& fds, const int seconds, const int useconds,
     }
   }
 
-  struct pollfd pfds[realFDs.size()];
-  memset(&pfds[0], 0, realFDs.size()*sizeof(struct pollfd));
+  std::vector<struct pollfd> pfds(realFDs.size());
+  memset(&pfds.at(0), 0, realFDs.size()*sizeof(struct pollfd));
   int ctr = 0;
   for (const auto& fd : realFDs) {
     pfds[ctr].fd = fd;
@@ -373,9 +373,9 @@ int waitForMultiData(const set<int>& fds, const int seconds, const int useconds,
 
   int ret;
   if(seconds >= 0)
-    ret = poll(pfds, realFDs.size(), seconds * 1000 + useconds/1000);
+    ret = poll(&pfds.at(0), realFDs.size(), seconds * 1000 + useconds/1000);
   else
-    ret = poll(pfds, realFDs.size(), -1);
+    ret = poll(&pfds.at(0), realFDs.size(), -1);
   if(ret <= 0)
     return ret;