Patchwork [02/18] block.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-2-git-send-email-kirill@shutemov.name>
Download mbox | patch
Permalink /patch/41488/
State New
Headers show

Comments

Kirill A. Shutemov - Dec. 20, 2009, 1:39 a.m.
CC    block.o
cc1: warnings being treated as errors
block.c: In function 'bdrv_open2':
block.c:400: error: ignoring return value of 'realpath', declared with attribute warn_unused_result

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
---
 block.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
Blue Swirl - Dec. 22, 2009, 6:35 p.m.
On Sun, Dec 20, 2009 at 1:39 AM, Kirill A. Shutemov
<kirill@shutemov.name> wrote:
>  CC    block.o
> cc1: warnings being treated as errors
> block.c: In function 'bdrv_open2':
> block.c:400: error: ignoring return value of 'realpath', declared with attribute warn_unused_result
>
> Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
> ---
>  block.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/block.c b/block.c
> index 3f3496e..30ae2b1 100644
> --- a/block.c
> +++ b/block.c
> @@ -396,8 +396,8 @@ int bdrv_open2(BlockDriverState *bs, const char *filename, int flags,
>         if (is_protocol)
>             snprintf(backing_filename, sizeof(backing_filename),
>                      "%s", filename);
> -        else
> -            realpath(filename, backing_filename);
> +        else if (!realpath(filename, backing_filename))
> +            return -errno;
>
>         bdrv_qcow2 = bdrv_find_format("qcow2");
>         options = parse_option_parameters("", bdrv_qcow2->create_options, NULL);

This patch appears to be correct considering:
- return value of realpath
- errno codes in the error case (as advertised by Linux man page and
the functions referenced by OpenBSD man page: lstat(), readlink(2) and
getcwd())
- return value of bdrv_open2().

Patch

diff --git a/block.c b/block.c
index 3f3496e..30ae2b1 100644
--- a/block.c
+++ b/block.c
@@ -396,8 +396,8 @@  int bdrv_open2(BlockDriverState *bs, const char *filename, int flags,
         if (is_protocol)
             snprintf(backing_filename, sizeof(backing_filename),
                      "%s", filename);
-        else
-            realpath(filename, backing_filename);
+        else if (!realpath(filename, backing_filename))
+            return -errno;
 
         bdrv_qcow2 = bdrv_find_format("qcow2");
         options = parse_option_parameters("", bdrv_qcow2->create_options, NULL);