Re: [PATCH] Fix build with GCC's static analysis

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Mar 27, 2017 at 06:57:10AM -0400, John Ferlan wrote:


On 03/27/2017 06:46 AM, 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

stop


oh

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

ATTRIBUTE


OH

How do I words again?

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@xxxxxxxxxx>
---
 src/util/virstoragefile.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)


ACK


Thanks, will push in a while.  I also added the commit ID for back-reference.

John

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;

         if (index)


--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

Attachment: signature.asc
Description: Digital signature

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]
  Powered by Linux