Skip to content

Commit 5bceef6

Browse files
committed
Change CMessageHeader Constructor
This commit removes the single-parameter contructor of CMessageHeader and replaces it with a default constructor. The single parameter contructor isn't used anywhere except for tests. There is no reason to initialize a CMessageHeader with a particular messagestart. This messagestart should always be replaced when deserializing an actual message header so that we can run checks on it. The default constructor initializes it to zero, just like the command and checksum. This also removes a parameter of a V1TransportDeserializer constructor, as it was only used for this purpose.
1 parent 1ca20c1 commit 5bceef6

File tree

6 files changed

+7
-8
lines changed

6 files changed

+7
-8
lines changed

src/net.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2846,7 +2846,7 @@ CNode::CNode(NodeId idIn, ServiceFlags nLocalServicesIn, int nMyStartingHeightIn
28462846
LogPrint(BCLog::NET, "Added connection peer=%d\n", id);
28472847
}
28482848

2849-
m_deserializer = MakeUnique<V1TransportDeserializer>(V1TransportDeserializer(Params().MessageStart(), GetId(), SER_NETWORK, INIT_PROTO_VERSION));
2849+
m_deserializer = MakeUnique<V1TransportDeserializer>(V1TransportDeserializer(GetId(), SER_NETWORK, INIT_PROTO_VERSION));
28502850
m_serializer = MakeUnique<V1TransportSerializer>(V1TransportSerializer());
28512851
}
28522852

src/net.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -765,10 +765,9 @@ class V1TransportDeserializer final : public TransportDeserializer
765765
}
766766

767767
public:
768-
V1TransportDeserializer(const CMessageHeader::MessageStartChars& pchMessageStartIn, const NodeId node_id, int nTypeIn, int nVersionIn)
768+
V1TransportDeserializer(const NodeId node_id, int nTypeIn, int nVersionIn)
769769
: m_node_id(node_id),
770770
hdrbuf(nTypeIn, nVersionIn),
771-
hdr(pchMessageStartIn),
772771
vRecv(nTypeIn, nVersionIn)
773772
{
774773
Reset();

src/protocol.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,9 @@ const static std::string allNetMessageTypes[] = {
8484
};
8585
const static std::vector<std::string> allNetMessageTypesVec(allNetMessageTypes, allNetMessageTypes+ARRAYLEN(allNetMessageTypes));
8686

87-
CMessageHeader::CMessageHeader(const MessageStartChars& pchMessageStartIn)
87+
CMessageHeader::CMessageHeader()
8888
{
89-
memcpy(pchMessageStart, pchMessageStartIn, MESSAGE_START_SIZE);
89+
memset(pchMessageStart, 0, MESSAGE_START_SIZE);
9090
memset(pchCommand, 0, sizeof(pchCommand));
9191
nMessageSize = -1;
9292
memset(pchChecksum, 0, CHECKSUM_SIZE);

src/protocol.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class CMessageHeader
3737
static constexpr size_t HEADER_SIZE = MESSAGE_START_SIZE + COMMAND_SIZE + MESSAGE_SIZE_SIZE + CHECKSUM_SIZE;
3838
typedef unsigned char MessageStartChars[MESSAGE_START_SIZE];
3939

40-
explicit CMessageHeader(const MessageStartChars& pchMessageStartIn);
40+
explicit CMessageHeader();
4141

4242
/** Construct a P2P message header from message-start characters, a command and the size of the message.
4343
* @note Passing in a `pszCommand` longer than COMMAND_SIZE will result in a run-time assertion error.

src/test/fuzz/deserialize.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ void test_one_input(const std::vector<uint8_t>& buffer)
190190
AssertEqualAfterSerializeDeserialize(s);
191191
#elif MESSAGEHEADER_DESERIALIZE
192192
const CMessageHeader::MessageStartChars pchMessageStart = {0x00, 0x00, 0x00, 0x00};
193-
CMessageHeader mh(pchMessageStart);
193+
CMessageHeader mh;
194194
DeserializeFromFuzzingInput(buffer, mh);
195195
(void)mh.IsValid(pchMessageStart);
196196
#elif ADDRESS_DESERIALIZE

src/test/fuzz/p2p_transport_deserializer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ void initialize()
2020
void test_one_input(const std::vector<uint8_t>& buffer)
2121
{
2222
// Construct deserializer, with a dummy NodeId
23-
V1TransportDeserializer deserializer{Params().MessageStart(), (NodeId)0, SER_NETWORK, INIT_PROTO_VERSION};
23+
V1TransportDeserializer deserializer{(NodeId)0, SER_NETWORK, INIT_PROTO_VERSION};
2424
const char* pch = (const char*)buffer.data();
2525
size_t n_bytes = buffer.size();
2626
while (n_bytes > 0) {

0 commit comments

Comments
 (0)