From 8d4b9f4e3d10fdfa319b17f385eeaae775d0071c Mon Sep 17 00:00:00 2001 From: Alex Bligh Date: Wed, 18 May 2011 17:34:09 +0100 Subject: [PATCH] nbd-server: don't check length and offset on flush --- nbd-server.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/nbd-server.c b/nbd-server.c index 602d42e..21fa563 100644 --- a/nbd-server.c +++ b/nbd-server.c @@ -1452,17 +1452,19 @@ int mainloop(CLIENT *client) { "READ", (unsigned long long)request.from, (unsigned long long)request.from / 512, len); #endif - memcpy(reply.handle, request.handle, sizeof(reply.handle)); - if ((request.from + len) > (OFFT_MAX)) { - DEBUG("[Number too large!]"); - ERROR(client, reply, EINVAL); - continue; - } + if ((command==NBD_CMD_WRITE) || (command==NBD_CMD_READ)) { + memcpy(reply.handle, request.handle, sizeof(reply.handle)); + if ((request.from + len) > (OFFT_MAX)) { + DEBUG("[Number too large!]"); + ERROR(client, reply, EINVAL); + continue; + } - if (((ssize_t)((off_t)request.from + len) > client->exportsize)) { - DEBUG("[RANGE!]"); - ERROR(client, reply, EINVAL); - continue; + if (((ssize_t)((off_t)request.from + len) > client->exportsize)) { + DEBUG("[RANGE!]"); + ERROR(client, reply, EINVAL); + continue; + } } if (command==NBD_CMD_WRITE) { -- 1.7.10.4