[libvirt] [PATCH 2/5] commandtest: Resolve some coverity resource leaks

John Ferlan jferlan at redhat.com
Thu Feb 14 16:42:02 UTC 2013


---
 tests/commandtest.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/tests/commandtest.c b/tests/commandtest.c
index 93c6333..3bfc358 100644
--- a/tests/commandtest.c
+++ b/tests/commandtest.c
@@ -680,7 +680,7 @@ static int test17(const void *unused ATTRIBUTE_UNUSED)
         goto cleanup;
     }
 
-    if (!outbuf || *outbuf) {
+    if (*outbuf) {
         puts("output buffer is not an allocated empty string");
         goto cleanup;
     }
@@ -702,7 +702,7 @@ static int test17(const void *unused ATTRIBUTE_UNUSED)
         goto cleanup;
     }
 
-    if (!outbuf || *outbuf || !errbuf || *errbuf) {
+    if (*outbuf || *errbuf) {
         puts("output buffers are not allocated empty strings");
         goto cleanup;
     }
@@ -936,6 +936,7 @@ mymain(void)
     int fd;
     virCommandTestDataPtr test = NULL;
     int timer = -1;
+    int virinitret;
 
     if (virThreadInitialize() < 0)
         return EXIT_FAILURE;
@@ -963,16 +964,19 @@ mymain(void)
         dup2(fd, 6) < 0 ||
         dup2(fd, 7) < 0 ||
         dup2(fd, 8) < 0 ||
-        (fd > 8 && VIR_CLOSE(fd) < 0))
+        (fd > 8 && VIR_CLOSE(fd) < 0)) {
+        VIR_FORCE_CLOSE(fd);
         return EXIT_FAILURE;
+    }
+    sa_assert(fd == -1);
 
     /* Prime the debug/verbose settings from the env vars,
      * since we're about to reset 'environ' */
     ignore_value(virTestGetDebug());
     ignore_value(virTestGetVerbose());
 
-    if (virInitialize() < 0)
-        return EXIT_FAILURE;
+    /* Make sure to not leak fd's */
+    virinitret = virInitialize();
 
     /* Phase two of killing interfering fds; see above.  */
     fd = 3;
@@ -988,6 +992,9 @@ mymain(void)
     fd = 8;
     VIR_FORCE_CLOSE(fd);
 
+    if (virinitret < 0)
+        return EXIT_FAILURE;
+
     virEventRegisterDefaultImpl();
     if (VIR_ALLOC(test) < 0) {
         virReportOOMError();
-- 
1.7.11.7




More information about the libvir-list mailing list