From d785bb2e3445900d9f9c82fd4d2e63bce55d7884 Mon Sep 17 00:00:00 2001 From: sowle Date: Wed, 6 Mar 2019 15:15:41 +0300 Subject: [PATCH 1/2] rpc: prev_hash added to getblocktemplate's response --- src/rpc/core_rpc_server.cpp | 1 + src/rpc/core_rpc_server_commands_defs.h | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/rpc/core_rpc_server.cpp b/src/rpc/core_rpc_server.cpp index 77429e54..4ba2bbf3 100644 --- a/src/rpc/core_rpc_server.cpp +++ b/src/rpc/core_rpc_server.cpp @@ -794,6 +794,7 @@ namespace currency blobdata block_blob = t_serializable_object_to_blob(b); res.blocktemplate_blob = string_tools::buff_to_hex_nodelimer(block_blob); + res.prev_hash = string_tools::pod_to_hex(b.prev_id); res.status = CORE_RPC_STATUS_OK; return true; diff --git a/src/rpc/core_rpc_server_commands_defs.h b/src/rpc/core_rpc_server_commands_defs.h index 3ceb9dbc..a2a2c47b 100644 --- a/src/rpc/core_rpc_server_commands_defs.h +++ b/src/rpc/core_rpc_server_commands_defs.h @@ -792,6 +792,7 @@ namespace currency uint64_t height; crypto::hash seed; blobdata blocktemplate_blob; + std::string prev_hash; std::string status; BEGIN_KV_SERIALIZE_MAP() @@ -799,6 +800,7 @@ namespace currency KV_SERIALIZE(height) KV_SERIALIZE_POD_AS_HEX_STRING(seed) KV_SERIALIZE(blocktemplate_blob) + KV_SERIALIZE(prev_hash) KV_SERIALIZE(status) END_KV_SERIALIZE_MAP() }; From f94f402b57458c31accba8a2b1826cbcb2ae47b9 Mon Sep 17 00:00:00 2001 From: sowle Date: Wed, 6 Mar 2019 15:16:40 +0300 Subject: [PATCH 2/2] fixed a potential string copy bug in handle_get_network_state --- src/p2p/net_node.inl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl index b4813725..c7e18dac 100644 --- a/src/p2p/net_node.inl +++ b/src/p2p/net_node.inl @@ -1062,8 +1062,9 @@ namespace nodetool ce.time_started = cntxt.m_started; ce.last_recv = cntxt.m_last_recv; ce.last_send = cntxt.m_last_send; - std::strncpy(ce.version, cntxt.m_remote_version.c_str(), std::min(sizeof(ce.version), cntxt.m_remote_version.size())); - ce.version[sizeof(ce.version) - 1] = 0; //null terminating just to be sure + size_t len = std::min(sizeof(ce.version) - 1, cntxt.m_remote_version.size()); + std::strncpy(ce.version, cntxt.m_remote_version.c_str(), len); + ce.version[len] = 0; //null terminating just to be sure rsp.connections_list.push_back(ce); return true; });