From: Richard Jones Date: Tue, 17 Nov 2009 17:02:45 +0000 (+0000) Subject: fuse: Fix read for empty files. X-Git-Tag: 1.0.79~5 X-Git-Url: http://git.annexia.org/?a=commitdiff_plain;h=336275ee6dbff5efa2152a4f67ef354b81d15d59;p=libguestfs.git fuse: Fix read for empty files. Error handling for the guestfs_pread call was incorrect, which meant that empty files could produce spurious error messages. --- diff --git a/fuse/guestmount.c b/fuse/guestmount.c index baf2b66..ba0d626 100644 --- a/fuse/guestmount.c +++ b/fuse/guestmount.c @@ -620,8 +620,14 @@ fg_read (const char *path, char *buf, size_t size, off_t offset, if (size > limit) size = limit; + /* Note the correct error handling here is tricky, because in the + * case where the call returns a zero-length buffer, it might return + * NULL. However it won't adjust rsize along the error path, so we + * can set rsize to something beforehand and use that as a flag. + */ + rsize = 1; r = guestfs_pread (g, path, size, offset, &rsize); - if (r == NULL) + if (rsize == 1 && r == NULL) return error (); /* This should never happen, but at least it stops us overflowing