diff options
author | Simon Rettberg | 2020-07-24 14:24:38 +0200 |
---|---|---|
committer | Simon Rettberg | 2020-07-24 14:24:38 +0200 |
commit | fa9c5cb8c07f98511e98572c379c63a2f9afc425 (patch) | |
tree | 7dc1191345b1710020def6c30f4d31afa319211e /src/fuse/main.c | |
parent | [FUSE] Cleanup (diff) | |
download | dnbd3-fa9c5cb8c07f98511e98572c379c63a2f9afc425.tar.gz dnbd3-fa9c5cb8c07f98511e98572c379c63a2f9afc425.tar.xz dnbd3-fa9c5cb8c07f98511e98572c379c63a2f9afc425.zip |
[FUSE] Fix returning pending request on RTT measurement
Diffstat (limited to 'src/fuse/main.c')
-rw-r--r-- | src/fuse/main.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/fuse/main.c b/src/fuse/main.c index 736dfc8..df30602 100644 --- a/src/fuse/main.c +++ b/src/fuse/main.c @@ -207,7 +207,7 @@ static void image_ll_read( fuse_req_t req, fuse_ino_t ino, size_t size, off_t of if ( offset + size > imageSize ) { size = imageSize - offset; } - if ( size == 0 ) { + if ( size == 0 || size > UINT32_MAX ) { fuse_reply_err( req, 0 ); return; } @@ -221,13 +221,14 @@ static void image_ll_read( fuse_req_t req, fuse_ino_t ino, size_t size, off_t of ++logInfo.blockRequestCount[startBlock]; } } - dnbd3_async_t *request = malloc( sizeof(dnbd3_async_t) ); + dnbd3_async_t *request = malloc( sizeof(dnbd3_async_t) + size ); request->length = (uint32_t)size; request->offset = offset; request->fuse_req = req; if ( !connection_read( request ) ) { fuse_reply_err( req, EIO ); + free( request ); } } |