[libvirt] [PATCH] Fix build with GCC's static analysis
Peter Krempa
pkrempa at redhat.com
Mon Mar 27 11:21:07 UTC 2017
On Mon, Mar 27, 2017 at 12:46:40 +0200, Martin Kletzander wrote:
> STREQ_NULLABLE returns true if both parameters are NULL. And that's
> not what we want here. We just want to skop comparing source nodes
s/skop/skip/
> that don't have that info set. The function wouldn't make much sense
> with nodeName == NULL, so we don't need to check that. Moreover, the
> function's declaration uses ATTRIBUDE_NONNULL for nodeName, which not
s/ATTRIBUDE_NONNULL/ATTRIBUTE_NONNULL/
> only means that function expects the parameter not to be NULL, but
> actually tells the compiler that it can optimize out the NULL checks.
> That way it could end up calling strcmp on NULL (either nodeformat or
> nodebacking). GCC figures this out if libvirt is compiled with
> lv_cv_static_analysis=yes, unfortunately not everyone uses that.
>
> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> ---
> src/util/virstoragefile.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
> index 3bcb69bf6206..0ac707962102 100644
> --- a/src/util/virstoragefile.c
> +++ b/src/util/virstoragefile.c
> @@ -3809,8 +3809,8 @@ virStorageSourceFindByNodeName(virStorageSourcePtr top,
> *index = 0;
>
> for (tmp = top; tmp; tmp = tmp->backingStore) {
> - if (STREQ_NULLABLE(tmp->nodeformat, nodeName) ||
> - STREQ_NULLABLE(tmp->nodebacking, nodeName))
> + if ((tmp->nodeformat && STREQ(tmp->nodeformat, nodeName)) ||
> + (tmp->nodebacking && STREQ(tmp->nodebacking, nodeName)))
> return tmp;
>
ACK
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170327/ad5f18a7/attachment-0001.sig>
More information about the libvir-list
mailing list