summaryrefslogtreecommitdiffstats
path: root/src/fuse/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fuse/main.c')
-rw-r--r--src/fuse/main.c5
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 );
}
}