Patchwork [07/18] block/bochs.c: fix warning with _FORTIFY_SOURCE

login
register
mail settings
Submitter Kirill A. Shutemov
Date Dec. 20, 2009, 1:39 a.m.
Message ID <1261273167-3240-7-git-send-email-kirill@shutemov.name>
Download mbox | patch
Permalink /patch/41494/
State New
Headers show

Comments

Kirill A. Shutemov - Dec. 20, 2009, 1:39 a.m.
CC    block/bochs.o
cc1: warnings being treated as errors
block/bochs.c: In function 'seek_to_sector':
block/bochs.c:202: error: ignoring return value of 'read', declared with attribute warn_unused_result
make: *** [block/bochs.o] Error 1

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
---
 block/bochs.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
Blue Swirl - Dec. 22, 2009, 9:02 p.m.
On Sun, Dec 20, 2009 at 1:39 AM, Kirill A. Shutemov
<kirill@shutemov.name> wrote:
>  CC    block/bochs.o
> cc1: warnings being treated as errors
> block/bochs.c: In function 'seek_to_sector':
> block/bochs.c:202: error: ignoring return value of 'read', declared with attribute warn_unused_result
> make: *** [block/bochs.o] Error 1
>
> Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
> ---
>  block/bochs.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/block/bochs.c b/block/bochs.c
> index bac81c4..f6a18f2 100644
> --- a/block/bochs.c
> +++ b/block/bochs.c
> @@ -199,7 +199,8 @@ static inline int seek_to_sector(BlockDriverState *bs, int64_t sector_num)
>     // read in bitmap for current extent
>     lseek(s->fd, bitmap_offset + (extent_offset / 8), SEEK_SET);
>
> -    read(s->fd, &bitmap_entry, 1);
> +    if (read(s->fd, &bitmap_entry, 1) != 1)
> +        return -1;

I think a short read can't happen with 1 bytes, so this looks fine.

Though error checking is incomplete unless it is extended to lseek() calls too.

Patch

diff --git a/block/bochs.c b/block/bochs.c
index bac81c4..f6a18f2 100644
--- a/block/bochs.c
+++ b/block/bochs.c
@@ -199,7 +199,8 @@  static inline int seek_to_sector(BlockDriverState *bs, int64_t sector_num)
     // read in bitmap for current extent
     lseek(s->fd, bitmap_offset + (extent_offset / 8), SEEK_SET);
 
-    read(s->fd, &bitmap_entry, 1);
+    if (read(s->fd, &bitmap_entry, 1) != 1)
+        return -1;
 
     if (!((bitmap_entry >> (extent_offset % 8)) & 1))
     {