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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list