aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2015-03-06 15:30:12 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2015-03-06 15:31:31 +0100
commit51377c2dbe0d71dad953a43187749a38010d1f1f (patch)
tree5e6b0f601795a266b3ad4a1ab6e6385dea9966ca /src
parentee9f2bfa7b7a629afdcc6d3ddc3b798acdf005ed (diff)
parentba04c4a7801e7d68a5e84035b919e5c3626eb7a7 (diff)
Merge pull request #5843
ba04c4a Limit message sizes before transfer (Pieter Wuille)
Diffstat (limited to 'src')
-rw-r--r--src/net.cpp5
-rw-r--r--src/net.h2
2 files changed, 7 insertions, 0 deletions
diff --git a/src/net.cpp b/src/net.cpp
index 3c3666615e..d9f470b9e4 100644
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -523,6 +523,11 @@ bool CNode::ReceiveMsgBytes(const char *pch, unsigned int nBytes)
if (handled < 0)
return false;
+ if (msg.in_data && msg.hdr.nMessageSize > MAX_PROTOCOL_MESSAGE_LENGTH) {
+ LogPrint("net", "Oversized message from peer=%i, disconnecting", GetId());
+ return false;
+ }
+
pch += handled;
nBytes -= handled;
diff --git a/src/net.h b/src/net.h
index d2b2d88ddb..24275d4a9d 100644
--- a/src/net.h
+++ b/src/net.h
@@ -46,6 +46,8 @@ static const int TIMEOUT_INTERVAL = 20 * 60;
static const unsigned int MAX_INV_SZ = 50000;
/** The maximum number of new addresses to accumulate before announcing. */
static const unsigned int MAX_ADDR_TO_SEND = 1000;
+/** Maximum length of incoming protocol messages (no message over 2 MiB is currently acceptable). */
+static const unsigned int MAX_PROTOCOL_MESSAGE_LENGTH = 2 * 1024 * 1024;
/** -listen default */
static const bool DEFAULT_LISTEN = true;
/** -upnp default */