[libvirt] [PATCH] Fix build with GCC's static analysis

Martin Kletzander mkletzan at redhat.com
Mon Mar 27 11:33:09 UTC 2017


On Mon, Mar 27, 2017 at 01:21:07PM +0200, Peter Krempa wrote:
>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/
>

Yes, John pointed that out... And I forgot to fix it before pushing...
Where are the ears?

>> 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: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170327/376ba190/attachment-0001.sig>


More information about the libvir-list mailing list