[libvirt] [libvirt-sandbox][PATCH 3/4] libvirt-sandbox-config: Don't deref NULL

Michal Privoznik mprivozn at redhat.com
Wed Sep 23 09:15:23 UTC 2015


The problem is in gvir_sandbox_config_add_mount_opts. When
parsing disk string, "format=" may be within it. This is
supposed to change disk format from raw to the desired one.
However, due to bug in our implementation, we may end up
dereferencing a NULL pointer.

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
---
 libvirt-sandbox/libvirt-sandbox-config.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/libvirt-sandbox/libvirt-sandbox-config.c b/libvirt-sandbox/libvirt-sandbox-config.c
index 780d174..5a4aacb 100644
--- a/libvirt-sandbox/libvirt-sandbox-config.c
+++ b/libvirt-sandbox/libvirt-sandbox-config.c
@@ -1611,15 +1611,16 @@ gboolean gvir_sandbox_config_add_mount_opts(GVirSandboxConfig *config,
             *tmp = '\0';
             formatStr = tmp + 1;
 
-            if ((strncmp(formatStr, "format=", 7) == 0) &&
-                !(enum_value = g_enum_get_value_by_nick(enum_class, formatStr + 7))) {
+            if ((strncmp(formatStr, "format=", 7) == 0)) {
+                if (!(enum_value = g_enum_get_value_by_nick(enum_class, formatStr + 7))) {
+                    g_type_class_unref(enum_class);
+                    g_set_error(error, GVIR_SANDBOX_CONFIG_ERROR, 0,
+                                _("Unknown disk image format: '%s'"), formatStr + 7);
+                    return FALSE;
+                }
                 g_type_class_unref(enum_class);
-                g_set_error(error, GVIR_SANDBOX_CONFIG_ERROR, 0,
-                            _("Unknown disk image format: '%s'"), formatStr + 7);
-                return FALSE;
+                format = enum_value->value;
             }
-            g_type_class_unref(enum_class);
-            format = enum_value->value;
         }
 
         mnt = GVIR_SANDBOX_CONFIG_MOUNT(g_object_new(type,
-- 
2.4.9




More information about the libvir-list mailing list