diff options
author | Riccardo Spagni <ric@spagni.net> | 2019-11-01 17:05:13 +0200 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2019-11-01 17:05:13 +0200 |
commit | d8d5749b46e509c6d0617229d80cf6f7b346e46b (patch) | |
tree | 0103866a00a46492936600abcdc5bb57dd5ad929 /tests | |
parent | Merge pull request #6066 (diff) | |
parent | unit_tests: fix use after free (diff) | |
download | monero-d8d5749b46e509c6d0617229d80cf6f7b346e46b.tar.xz |
Merge pull request #6067
5ae029881 unit_tests: fix use after free (moneromooo-monero)
Diffstat (limited to 'tests')
-rw-r--r-- | tests/unit_tests/node_server.cpp | 23 |
1 files 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<Server> { + struct test_data_t + { test_core pr_core; - cryptonote::t_cryptonote_protocol_handler<test_core> cprotocol(pr_core, NULL); - std::unique_ptr<Server> server(new Server(cprotocol)); - cprotocol.set_p2p_endpoint(server.get()); + cryptonote::t_cryptonote_protocol_handler<test_core> cprotocol; + std::unique_ptr<Server> 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> { + test_data_t *d = new test_data_t; + return std::unique_ptr<test_data_t>(d); }; - const auto init = [](const std::unique_ptr<Server>& server, const char* port) -> bool { + const auto init = [](const std::unique_ptr<test_data_t>& 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"; |