view libirccd-test/CMakeLists.txt @ 568:ed986ae52656

Common: avoid early deletion of handler When network_stream flushes input/output it destroy the handlers before continuing the block function. This leads in potential use-after-free results because client handlers may capture this as a shared_ptr which is deleted in the `pop_front` call. if (squeue_.front().second) squeue_.front().second(code); squeue_.pop_front(); // ^ ^ ^ Delete handler and possible capture of this sflush(); // ^ ^ ^ Possible use-after-free of `this`
author David Demelier <markand@malikania.fr>
date Tue, 28 Nov 2017 12:20:58 +0100
parents 781e58cf49a0
children 9d4da384f5d6
line wrap: on
line source

#
# CMakeLists.txt -- CMake build system for irccd
#
# Copyright (c) 2013-2017 David Demelier <markand@malikania.fr>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#

project(libirccd-test)

irccd_define_library(
    TARGET libirccd-test
    SOURCES
        ${libirccd-test_SOURCE_DIR}/irccd/command_test.hpp
        ${libirccd-test_SOURCE_DIR}/irccd/journal_server.cpp
        ${libirccd-test_SOURCE_DIR}/irccd/journal_server.hpp
        $<$<BOOL:${HAVE_JS}>:${libirccd-test_SOURCE_DIR}/irccd/plugin_test.cpp>
        $<$<BOOL:${HAVE_JS}>:${libirccd-test_SOURCE_DIR}/irccd/plugin_test.hpp>
        $<$<BOOL:${HAVE_JS}>:${libirccd-test_SOURCE_DIR}/irccd/js_test.hpp>
        $<$<BOOL:${HAVE_JS}>:${libirccd-test_SOURCE_DIR}/irccd/plugin_test.js>
    LIBRARIES
        $<$<BOOL:${HAVE_JS}>:libirccd-js>
        libirccd
        libirccdctl
    PUBLIC_INCLUDES
        $<BUILD_INTERFACE:${libirccd-test_SOURCE_DIR}/irccd>
    FLAGS
        $<BUILD_INTERFACE:IRCCD_PLUGIN_TEST="${libirccd-test_SOURCE_DIR}/irccd/plugin_test.js">
)