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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list