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