From 4f4baea4e79e063b027a9a3672ce272f0c0f5be7 Mon Sep 17 00:00:00 2001 From: Wesley Shillingford Date: Thu, 7 Nov 2019 21:35:49 +0000 Subject: [PATCH] [Valgrind] Various uninitialized data accesses (#2389) * [Valgrind] Uninitialized data access in bulk_pull * Uninitialized memory access in websocket. work * Fix rpc.wallet_create_seed * Fix wallet.change_seed * Fix wallet_create_fail test * Serg review --- nano/core_test/websocket.cpp | 2 +- nano/node/common.cpp | 6 ++---- nano/node/common.hpp | 6 +++--- nano/node/wallet.hpp | 2 +- nano/rpc_test/rpc.cpp | 3 +++ 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/nano/core_test/websocket.cpp b/nano/core_test/websocket.cpp index f47369963..00b210aa7 100644 --- a/nano/core_test/websocket.cpp +++ b/nano/core_test/websocket.cpp @@ -733,7 +733,7 @@ TEST (websocket, work) ASSERT_EQ (1, node1->websocket_server->subscriber_count (nano::websocket::topic::work)); // Generate work - nano::block_hash hash; + nano::block_hash hash{ 1 }; auto work (node1->work_generate_blocking (hash)); ASSERT_TRUE (work.is_initialized ()); diff --git a/nano/node/common.cpp b/nano/node/common.cpp index 3e56c7078..9d2d5f982 100644 --- a/nano/node/common.cpp +++ b/nano/node/common.cpp @@ -792,14 +792,12 @@ bool nano::frontier_req::operator== (nano::frontier_req const & other_a) const } nano::bulk_pull::bulk_pull () : -message (nano::message_type::bulk_pull), -count (0) +message (nano::message_type::bulk_pull) { } nano::bulk_pull::bulk_pull (bool & error_a, nano::stream & stream_a, nano::message_header const & header_a) : -message (header_a), -count (0) +message (header_a) { if (!error_a) { diff --git a/nano/node/common.hpp b/nano/node/common.hpp index 3a9ed3f6b..ce368e5c1 100644 --- a/nano/node/common.hpp +++ b/nano/node/common.hpp @@ -355,9 +355,9 @@ public: void serialize (nano::stream &) const override; bool deserialize (nano::stream &); void visit (nano::message_visitor &) const override; - nano::hash_or_account start; - nano::block_hash end; - count_t count; + nano::hash_or_account start{ 0 }; + nano::block_hash end{ 0 }; + count_t count{ 0 }; bool is_count_present () const; void set_count_present (bool); static size_t constexpr count_present_flag = nano::message_header::bulk_pull_count_present_flag; diff --git a/nano/node/wallet.hpp b/nano/node/wallet.hpp index 9c41a7b24..7581f1454 100644 --- a/nano/node/wallet.hpp +++ b/nano/node/wallet.hpp @@ -111,7 +111,7 @@ public: static size_t const seed_iv_index; static int const special_count; nano::kdf & kdf; - MDB_dbi handle; + MDB_dbi handle{ 0 }; std::recursive_mutex mutex; private: diff --git a/nano/rpc_test/rpc.cpp b/nano/rpc_test/rpc.cpp index 0e401763e..709c33084 100644 --- a/nano/rpc_test/rpc.cpp +++ b/nano/rpc_test/rpc.cpp @@ -977,6 +977,7 @@ TEST (rpc, wallet_create_seed) nano::system system (24000, 1); scoped_io_thread_name_change scoped_thread_name_io; nano::raw_key seed; + nano::random_pool::generate_block (seed.data.bytes.data (), seed.data.bytes.size ()); auto prv = nano::deterministic_key (seed, 0); auto pub (nano::pub_key (prv)); auto node = system.nodes.front (); @@ -3575,9 +3576,11 @@ TEST (rpc, wallet_change_seed) { nano::system system0 (24000, 1); nano::raw_key seed; + nano::random_pool::generate_block (seed.data.bytes.data (), seed.data.bytes.size ()); { auto transaction (system0.nodes[0]->wallets.tx_begin_read ()); nano::raw_key seed0; + nano::random_pool::generate_block (seed0.data.bytes.data (), seed0.data.bytes.size ()); system0.wallet (0)->store.seed (seed0, transaction); ASSERT_NE (seed, seed0); }