From 66acf9038b9871cafaa087cefd06d5fd9d06ccf8 Mon Sep 17 00:00:00 2001 From: Nick Bolton Date: Fri, 28 Feb 2025 12:19:39 +0000 Subject: [PATCH] fix: Solve double-free by letting `Log` adopt `FileLogOutputter` in Windows daemon --- src/lib/deskflow/DaemonApp.cpp | 6 +++--- src/lib/deskflow/DaemonApp.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/deskflow/DaemonApp.cpp b/src/lib/deskflow/DaemonApp.cpp index 4679af1a2..d05a25e4b 100644 --- a/src/lib/deskflow/DaemonApp.cpp +++ b/src/lib/deskflow/DaemonApp.cpp @@ -203,8 +203,8 @@ void DaemonApp::mainLoop(bool logToFile, bool foreground) DAEMON_RUNNING(true); if (logToFile) { - m_fileLogOutputter = std::make_unique(logFilename().c_str()); - CLOG->insert(m_fileLogOutputter.get()); + m_fileLogOutputter = new FileLogOutputter(logFilename().c_str()); // NOSONAR -- Adopted by `Log` + CLOG->insert(m_fileLogOutputter); } // create socket multiplexer. this must happen after daemonization @@ -220,7 +220,7 @@ void DaemonApp::mainLoop(bool logToFile, bool foreground) #if SYSAPI_WIN32 m_watchdog = std::make_unique(false, *m_ipcServer, *m_ipcLogOutputter, foreground); - m_watchdog->setFileLogOutputter(m_fileLogOutputter.get()); + m_watchdog->setFileLogOutputter(m_fileLogOutputter); #endif m_events->adoptHandler( diff --git a/src/lib/deskflow/DaemonApp.h b/src/lib/deskflow/DaemonApp.h index 563704e64..c801de0f2 100644 --- a/src/lib/deskflow/DaemonApp.h +++ b/src/lib/deskflow/DaemonApp.h @@ -47,5 +47,5 @@ private: std::unique_ptr m_ipcServer; std::unique_ptr m_ipcLogOutputter; std::unique_ptr m_events; - std::unique_ptr m_fileLogOutputter; + FileLogOutputter *m_fileLogOutputter = nullptr; };