Skip to content

Commit 673f230

Browse files
committed
fix packet header size attack
1 parent b84a08c commit 673f230

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

subspace/src/network/ClientTcpConnection.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ namespace subspace {
7777
disconnect();
7878
return;
7979
}
80+
if (headerBufValue > 2 * 1024 * 1024) {
81+
spdlog::warn("Packet too big: {}", headerBufValue);
82+
disconnect();
83+
return;
84+
}
8085
extractContent(headerBufValue);
8186
} else {
8287
headerBufOffsetBit += 7;

subspace/src/network/ServerConnection.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
namespace subspace {
88
ServerConnection::ServerConnection(asio::ip::tcp::socket socket) :
9-
BaseConnection(CryptHelper::NULL_ENCODE_DECODE, CryptHelper::AES_GCM_DECODE), socket(std::move(socket)), handshakeTimer(this->socket.get_executor()) {}
9+
BaseConnection(CryptHelper::NULL_ENCODE_DECODE, CryptHelper::AES_GCM_DECODE), socket(std::move(socket)), handshakeTimer(this->socket.get_executor()) {
10+
}
1011

1112
void ServerConnection::start() {
1213
socket.set_option(asio::ip::tcp::no_delay(true));
@@ -41,6 +42,11 @@ namespace subspace {
4142
disconnect();
4243
return;
4344
}
45+
if (headerBufValue > 2 * 1024 * 1024) {
46+
spdlog::warn("Packet too big: {}", headerBufValue);
47+
disconnect();
48+
return;
49+
}
4450
extractContent(headerBufValue);
4551
} else {
4652
headerBufOffsetBit += 7;

0 commit comments

Comments
 (0)