From 1554a7768bcb4e29e7f3cb2d6f3225ddecacb458 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Wed, 30 Oct 2019 18:39:48 +0000 Subject: unit_tests: fix use after free --- tests/unit_tests/node_server.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/tests/unit_tests/node_server.cpp b/tests/unit_tests/node_server.cpp index 2c89323c7..5f91fc6d4 100644 --- a/tests/unit_tests/node_server.cpp +++ b/tests/unit_tests/node_server.cpp @@ -262,16 +262,25 @@ TEST(ban, ignores_port) TEST(node_server, bind_same_p2p_port) { - const auto new_node = []() -> std::unique_ptr { + struct test_data_t + { test_core pr_core; - cryptonote::t_cryptonote_protocol_handler cprotocol(pr_core, NULL); - std::unique_ptr server(new Server(cprotocol)); - cprotocol.set_p2p_endpoint(server.get()); + cryptonote::t_cryptonote_protocol_handler cprotocol; + std::unique_ptr server; + + test_data_t(): cprotocol(pr_core, NULL) + { + server.reset(new Server(cprotocol)); + cprotocol.set_p2p_endpoint(server.get()); + } + }; - return server; + const auto new_node = []() -> std::unique_ptr { + test_data_t *d = new test_data_t; + return std::unique_ptr(d); }; - const auto init = [](const std::unique_ptr& server, const char* port) -> bool { + const auto init = [](const std::unique_ptr& server, const char* port) -> bool { boost::program_options::options_description desc_options("Command line options"); cryptonote::core::init_options(desc_options); Server::init_options(desc_options); @@ -284,7 +293,7 @@ TEST(node_server, bind_same_p2p_port) boost::program_options::notify(vm); - return server->init(vm); + return server->server->init(vm); }; constexpr char port[] = "48080"; -- cgit v1.2.3