]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1948] extend lifetime of IOService in IOSignalSet
authorAndrei Pavel <andrei@isc.org>
Mon, 28 Jun 2021 06:25:02 +0000 (09:25 +0300)
committerAndrei Pavel <andrei@isc.org>
Mon, 28 Jun 2021 06:25:02 +0000 (09:25 +0300)
to avoid heap-use-after-free

src/lib/asiolink/io_service_signal.cc

index 95fc8a6be978a9ee7d28e57548e09805027c80b1..ea1010359df832f07b066842fca3ea8b64283c4f 100644 (file)
@@ -46,6 +46,9 @@ public:
     void remove(int signum);
 
 private:
+    /// @brief Extends the lifetime of IOService to avoid heap-use-after-free.
+    IOServicePtr io_service_;
+
     /// @brief the ASIO signal set.
     boost::asio::signal_set signal_set_;
 
@@ -61,7 +64,9 @@ private:
 
 IOSignalSetImpl::IOSignalSetImpl(IOServicePtr io_service,
                                  IOSignalHandler handler)
-    : signal_set_(io_service->get_io_service()), handler_(handler) {
+    : io_service_(io_service),
+      signal_set_(io_service_->get_io_service()),
+      handler_(handler) {
 }
 
 void