[libvirt] [PATCH v4 04/25] qemusecuritymock: Introduce and use freePaths()

Michal Privoznik mprivozn at redhat.com
Thu Apr 25 08:19:40 UTC 2019


Problem with current approach is that if
qemuSecuritySetAllLabel() fails, then the @chown_paths and
@xattr_paths hash tables are not freed and preserve values
already stored there into the next test case.

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
---
 tests/qemusecuritymock.c | 14 ++++++++++++--
 tests/qemusecuritytest.c |  1 +
 tests/qemusecuritytest.h |  2 ++
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/tests/qemusecuritymock.c b/tests/qemusecuritymock.c
index e52a41067a..815bd44d76 100644
--- a/tests/qemusecuritymock.c
+++ b/tests/qemusecuritymock.c
@@ -411,13 +411,23 @@ int checkPaths(void)
 
     ret = 0;
  cleanup:
-    virHashRemoveAll(chown_paths);
-    virHashRemoveAll(xattr_paths);
     virMutexUnlock(&m);
     return ret;
 }
 
 
+void freePaths(void)
+{
+    virMutexLock(&m);
+    init_hash();
+
+    virHashFree(chown_paths);
+    virHashFree(xattr_paths);
+    chown_paths = xattr_paths = NULL;
+    virMutexUnlock(&m);
+}
+
+
 int
 virProcessRunInFork(virProcessForkCallback cb,
                     void *opaque)
diff --git a/tests/qemusecuritytest.c b/tests/qemusecuritytest.c
index 79d4f744b6..9ac953f388 100644
--- a/tests/qemusecuritytest.c
+++ b/tests/qemusecuritytest.c
@@ -125,6 +125,7 @@ testDomain(const void *opaque)
     unsetenv(ENVVAR);
     virObjectUnref(vm);
     virObjectUnref(securityManager);
+    freePaths();
     return ret;
 }
 
diff --git a/tests/qemusecuritytest.h b/tests/qemusecuritytest.h
index a26014b5dc..29c6a9c998 100644
--- a/tests/qemusecuritytest.h
+++ b/tests/qemusecuritytest.h
@@ -23,4 +23,6 @@
 
 extern int checkPaths(void);
 
+extern void freePaths(void);
+
 #endif /* LIBVIRT_QEMUSECURITYTEST_H */
-- 
2.21.0




More information about the libvir-list mailing list