[libvirt] [PATCH 3/3] shunloadtest: Resolve Coverity CHECKED_RETURN error

John Ferlan jferlan at redhat.com
Thu May 16 14:01:53 UTC 2013


The shunloadStart function didn't check the status of virInitialize which
was flagged by Coverity.  Adjust the function and shunloadtest in order
to handle the situation.
---
 tests/shunloadhelper.c | 12 ++++++++----
 tests/shunloadtest.c   | 26 +++++++++++++++++---------
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/tests/shunloadhelper.c b/tests/shunloadhelper.c
index a8f5aef..f2afbe8 100644
--- a/tests/shunloadhelper.c
+++ b/tests/shunloadhelper.c
@@ -36,16 +36,20 @@ static void shunloadError(void *userData ATTRIBUTE_UNUSED,
 {
 }
 
-void shunloadStart(void);
+int shunloadStart(void);
 
-void shunloadStart(void) {
+int shunloadStart(void) {
     virConnectPtr conn;
 
     virSetErrorFunc(NULL, shunloadError);
-    virInitialize();
+    if (virInitialize() < 0)
+        return -1;
 
     conn = virConnectOpen("test:///default");
     virDomainDestroy(NULL);
-    if (conn)
+    if (conn) {
         virConnectClose(conn);
+        return 0;
+    }
+    return -1;
 }
diff --git a/tests/shunloadtest.c b/tests/shunloadtest.c
index 8271b93..8190e97 100644
--- a/tests/shunloadtest.c
+++ b/tests/shunloadtest.c
@@ -56,17 +56,22 @@
 pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
 pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
 bool running = false;
+bool failstart = false;
 bool quit = false;
 
 static void *threadMain(void *arg)
 {
-    void (*startup)(void) = arg;
-
-    startup();
-
-    pthread_mutex_lock(&lock);
-    running = true;
-    pthread_cond_signal(&cond);
+    int (*startup)(void) = arg;
+
+    if (startup() < 0) {
+        pthread_mutex_lock(&lock);
+        failstart = true;
+        pthread_cond_signal(&cond);
+    } else {
+        pthread_mutex_lock(&lock);
+        running = true;
+        pthread_cond_signal(&cond);
+    }
 
     while (!quit) {
         pthread_cond_wait(&cond, &lock);
@@ -119,7 +124,7 @@ int main(int argc ATTRIBUTE_UNUSED, char **argv)
 
     /* Wait for the thread to start and call libvirt */
     pthread_mutex_lock(&lock);
-    while (!running) {
+    while (!running && !failstart) {
         pthread_cond_wait(&cond, &lock);
     }
 
@@ -138,7 +143,10 @@ int main(int argc ATTRIBUTE_UNUSED, char **argv)
      * causing a SEGV !
      */
 
-    fprintf(stderr, "OK\n");
+    if (failstart)
+        fprintf(stderr, "FAIL to initialize libvirt\n");
+    else
+        fprintf(stderr, "OK\n");
 
     return 0;
 }
-- 
1.8.1.4




More information about the libvir-list mailing list