[libvirt] [PATCH] vshCommandParse: placate coverity

Jim Meyering jim at meyering.net
Tue Feb 16 13:42:54 UTC 2010


Here are two patches to avoid semblance of a leak.

One adds a useless use of VIR_FREE.
The other adds an assertion that the pointer to would-be-leaked
storage is NULL.  There's already an assertion in this file,
so no need to add an "#include ...".

Take your pick.

>From 2070262e7f1a4803e06a6f75bd96091c5754164d Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering at redhat.com>
Date: Tue, 16 Feb 2010 14:34:48 +0100
Subject: [PATCH] vshCommandParse: placate coverity

There is no real leak here, but Coverity-Prevent thinks there is.
It does not see that while there are four ways to return from
vshCommandGetToken with VSH_TK_END, none of them results in allocation
of a result.
* tools/virsh.c (vshCommandParse): Add a (currently) useless VIR_FREE,
to ensure that we never leak when vshCommandGetToken returns VSH_TK_END.
---
 tools/virsh.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/tools/virsh.c b/tools/virsh.c
index 7db48d9..4ffa154 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -8222,8 +8222,10 @@ vshCommandParse(vshControl *ctl, char *cmdstr)

             str = end;

-            if (tk == VSH_TK_END)
+            if (tk == VSH_TK_END) {
+                VIR_FREE(tkdata);
                 break;
+            }
             if (tk == VSH_TK_ERROR)
                 goto syntaxError;

--
1.7.0.181.g41533



>From 98b0c148d7fd7e11eed7786189db60b485612b51 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering at redhat.com>
Date: Tue, 16 Feb 2010 14:34:48 +0100
Subject: [PATCH] vshCommandParse: placate coverity

* tools/virsh.c (vshCommandParse): Inform static analyzers that
there is no risk of leak when vshCommandGetToken returns VSH_TK_END.
---
 tools/virsh.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/tools/virsh.c b/tools/virsh.c
index 7db48d9..5c45d1c 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -8222,8 +8222,10 @@ vshCommandParse(vshControl *ctl, char *cmdstr)

             str = end;

-            if (tk == VSH_TK_END)
+            if (tk == VSH_TK_END) {
+                assert (tkdata == NULL);
                 break;
+            }
             if (tk == VSH_TK_ERROR)
                 goto syntaxError;

--
1.7.0.181.g41533




More information about the libvir-list mailing list