summaryrefslogtreecommitdiffstats
path: root/src/server/uplink.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/uplink.c')
-rw-r--r--src/server/uplink.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/server/uplink.c b/src/server/uplink.c
index ef8f893..d544795 100644
--- a/src/server/uplink.c
+++ b/src/server/uplink.c
@@ -163,6 +163,10 @@ void uplink_removeClient(dnbd3_connection_t *uplink, dnbd3_client_t *client)
bool uplink_request(dnbd3_client_t *client, uint64_t handle, uint64_t start, uint32_t length, uint8_t hops)
{
if ( client == NULL || client->image == NULL ) return false;
+ if ( length > (uint32_t)_maxPayload ) {
+ logadd( LOG_WARNING, "Cannot relay request by client; length of %" PRIu32 " exceeds maximum payload", length );
+ return false;
+ }
spin_lock( &client->image->lock );
if ( client->image->uplink == NULL ) {
spin_unlock( &client->image->lock );