[libvirt] [PATCH] vircgroup: fix NULL pointer dereferencing

Marc Hartmayer mhartmay at linux.ibm.com
Wed Sep 26 15:53:29 UTC 2018


When virCgroupEnableMissingControllers fails it's possible that *group
is still set to NULL. Therefore let's add a guard and an attribute for
this.

 [#0] virCgroupRemove(group=0x0)
 [#1] virCgroupNewMachineSystemd
 [#2] virCgroupNewMachine
 [#3] qemuInitCgroup
 [#4] qemuSetupCgroup
 [#5] qemuProcessLaunch
 [#6] qemuProcessStart
 [#7] qemuDomainObjStart
 [#8] qemuDomainCreateWithFlags
 [#9] qemuDomainCreate
 ...

Fixes: 1602aa28f820ada66f707cef3e536e8572fbda1e
Reviewed-by: Boris Fiuczynski <fiuczy at linux.ibm.com>
Reviewed-by: Bjoern Walk <bwalk at linux.ibm.com>
Signed-off-by: Marc Hartmayer <mhartmay at linux.ibm.com>
---
 src/util/vircgroup.c | 3 ++-
 src/util/vircgroup.h | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
index 23957c82c7fa..06e1d158febb 100644
--- a/src/util/vircgroup.c
+++ b/src/util/vircgroup.c
@@ -1104,7 +1104,8 @@ virCgroupNewMachineSystemd(const char *name,
 
  error:
     saved = virSaveLastError();
-    virCgroupRemove(*group);
+    if (*group)
+        virCgroupRemove(*group);
     virCgroupFree(group);
     if (saved) {
         virSetError(saved);
diff --git a/src/util/vircgroup.h b/src/util/vircgroup.h
index 1f676f21c380..9e1ae3706b1e 100644
--- a/src/util/vircgroup.h
+++ b/src/util/vircgroup.h
@@ -268,7 +268,8 @@ int virCgroupGetCpusetMemoryMigrate(virCgroupPtr group, bool *migrate);
 int virCgroupSetCpusetCpus(virCgroupPtr group, const char *cpus);
 int virCgroupGetCpusetCpus(virCgroupPtr group, char **cpus);
 
-int virCgroupRemove(virCgroupPtr group);
+int virCgroupRemove(virCgroupPtr group)
+    ATTRIBUTE_NONNULL(1);
 
 int virCgroupKillRecursive(virCgroupPtr group, int signum);
 int virCgroupKillPainfully(virCgroupPtr group);
-- 
2.17.0




More information about the libvir-list mailing list