[libvirt] [PATCH] util: storage: Fix build after 25924dec0f9329d429aadae14e273602307e2214

Michal Privoznik mprivozn at redhat.com
Wed Jul 9 08:12:25 UTC 2014


On 09.07.2014 10:05, Peter Krempa wrote:
> The commit referenced above changed function arguments of
> virStorageFileGetMetadataFromBuf() but didn't tweak the
> ATTRIBUTE_NONNULL tied to them. This was caught by coverity as it
> actually obeys them. We disabled them for GCC and thus it didn't show
> up.
>
> Additionally in commit 3ea661deeabadc3c114dfb6f662b9fd17d714a01 I passed
> NULL to the backingFormat argument which was also marked as nonnull. Use
> a dummy int's address when the argument isn't supplied so that the code
> doesn't need to change much.
> ---
>   src/util/virstoragefile.c | 4 ++++
>   src/util/virstoragefile.h | 3 +--
>   2 files changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
> index 505b652..de0e27a 100644
> --- a/src/util/virstoragefile.c
> +++ b/src/util/virstoragefile.c
> @@ -955,6 +955,10 @@ virStorageFileGetMetadataFromBuf(const char *path,
>                                    int *backingFormat)
>   {
>       virStorageSourcePtr ret = NULL;
> +    int dummy;
> +
> +    if (!backingFormat)
> +        backingFormat = &dummy;
>
>       if (!(ret = virStorageFileMetadataNew(path, format)))
>           return NULL;
> diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
> index 744a6ba..528cfad 100644
> --- a/src/util/virstoragefile.h
> +++ b/src/util/virstoragefile.h
> @@ -301,8 +301,7 @@ virStorageSourcePtr virStorageFileGetMetadataFromBuf(const char *path,
>                                                        size_t len,
>                                                        int format,
>                                                        int *backingFormat)
> -    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(4)
> -    ATTRIBUTE_NONNULL(5);
> +    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
>   int virStorageFileChainGetBroken(virStorageSourcePtr chain,
>                                    char **broken_file);
>

So if we need to cripple passing NULL, why do we even have 
ATTRIBUTE_NONNULL? Wouldn't it be simpler if 
virStorageFileGetMetadataFromBuf would accept NULL?

Michal




More information about the libvir-list mailing list