diff options
Diffstat (limited to 'nbd/server.c')
-rw-r--r-- | nbd/server.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/nbd/server.c b/nbd/server.c index 7d6801b427..a81801e3bc 100644 --- a/nbd/server.c +++ b/nbd/server.c @@ -673,6 +673,12 @@ static int nbd_negotiate_options(NBDClient *client, uint16_t myflags, } length = be32_to_cpu(length); + if (length > NBD_MAX_BUFFER_SIZE) { + error_setg(errp, "len (%" PRIu32" ) is larger than max len (%u)", + length, NBD_MAX_BUFFER_SIZE); + return -EINVAL; + } + trace_nbd_negotiate_options_check_option(option, nbd_opt_lookup(option)); if (client->tlscreds && |