]> xenbits.xensource.com Git - libvirt.git/commitdiff
libxl: Avoid possible use of uninitialized mem in libxlDomainStart
authorDaniel P. Berrange <berrange@redhat.com>
Mon, 2 Jun 2014 10:53:03 +0000 (11:53 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 3 Jun 2014 10:45:59 +0000 (11:45 +0100)
The 'libxl_domain_config' object is stack allocated which means its
memory contents are undefined. The libxl_domain_config_dispose() call
is only safe if the memory is initialized to a defined state. Not all
code paths which reach libxl_domain_config_dispose() will ensure that
libxl_domain_config_init() is called. Move the libxl_domain_config_init()
call earlier in the function to ensure all codepaths have defined
memory state.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
src/libxl/libxl_domain.c

index a1669801d9d8992816aeb3b9d7a7234738ecc02b..eab789ac7f91d957c9afcced9f967c9fbd0da4c5 100644 (file)
@@ -1100,6 +1100,8 @@ libxlDomainStart(libxlDriverPrivatePtr driver, virDomainObjPtr vm,
 #endif
     virHostdevManagerPtr hostdev_mgr = driver->hostdevMgr;
 
+    libxl_domain_config_init(&d_config);
+
     if (libxlDomainObjPrivateInitCtx(vm) < 0)
         return ret;
 
@@ -1149,8 +1151,6 @@ libxlDomainStart(libxlDriverPrivatePtr driver, virDomainObjPtr vm,
         VIR_FREE(managed_save_path);
     }
 
-    libxl_domain_config_init(&d_config);
-
     if (libxlBuildDomainConfig(driver->reservedVNCPorts, vm->def,
                                priv->ctx, &d_config) < 0)
         goto endjob;