mirror of https://github.com/Icinga/icinga2.git
e6300aacf9
There is no explicit synchronization of access to m_DataBuffer which is fine if it is only accessed from the single-threaded work queue. However, Stop() also called Flush() in another thread, leading to concurrent write access to m_DataBuffer which can result in a crash due to use after free/double free. Changes in this commit: * Flush() is renamed to FlushWQ() to show that it should only be called from the work queue. Additionally, it now asserts that it is running on the work queue. * Visibility of some data members is changed from protected to private. No other classes have to access these at the moment. By this change, accidental concurrent access from derived classes in the future is prevented. * Stop() now flushes by posting FlushWQ() to the work queue and joining it. |
||
---|---|---|
.. | ||
base | ||
checker | ||
cli | ||
compat | ||
config | ||
db_ido | ||
db_ido_mysql | ||
db_ido_pgsql | ||
icinga | ||
icingadb | ||
livestatus | ||
methods | ||
mysql_shim | ||
notification | ||
perfdata | ||
pgsql_shim | ||
remote | ||
CMakeLists.txt |