[libvirt] [PATCH] qemu: cgroup: Fix crash if starting nographics guest

We can dereference graphics[0] even if guest has no graphics device configured. I screwed this up in a216e6487255d3b65d97c7ec1fa5da63dbced902 --- src/qemu/qemu_cgroup.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c index f95c7f2..ace7e35 100644 --- a/src/qemu/qemu_cgroup.c +++ b/src/qemu/qemu_cgroup.c @@ -490,9 +490,10 @@ qemuSetupDevicesCgroup(virQEMUDriverPtr driver, if (vm->def->nsounds && ((!vm->def->ngraphics && cfg->nogfxAllowHostAudio) || - ((vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC && + (vm->def->graphics && + ((vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC && cfg->vncAllowHostAudio) || - (vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL)))) { + (vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL))))) { rv = virCgroupAllowDeviceMajor(priv->cgroup, 'c', DEVICE_SND_MAJOR, VIR_CGROUP_DEVICE_RW); virDomainAuditCgroupMajor(vm, priv->cgroup, "allow", DEVICE_SND_MAJOR, -- 1.8.3.1

On 10/01/2013 05:56 AM, Cole Robinson wrote:
We can dereference graphics[0] even if guest has no graphics device configured. I screwed this up in a216e6487255d3b65d97c7ec1fa5da63dbced902 --- src/qemu/qemu_cgroup.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
ACK.
diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c index f95c7f2..ace7e35 100644 --- a/src/qemu/qemu_cgroup.c +++ b/src/qemu/qemu_cgroup.c @@ -490,9 +490,10 @@ qemuSetupDevicesCgroup(virQEMUDriverPtr driver,
if (vm->def->nsounds && ((!vm->def->ngraphics && cfg->nogfxAllowHostAudio) || - ((vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC && + (vm->def->graphics && + ((vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC && cfg->vncAllowHostAudio) || - (vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL)))) { + (vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL))))) { rv = virCgroupAllowDeviceMajor(priv->cgroup, 'c', DEVICE_SND_MAJOR, VIR_CGROUP_DEVICE_RW); virDomainAuditCgroupMajor(vm, priv->cgroup, "allow", DEVICE_SND_MAJOR,
-- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

On 10/01/2013 08:07 AM, Eric Blake wrote:
On 10/01/2013 05:56 AM, Cole Robinson wrote:
We can dereference graphics[0] even if guest has no graphics device configured. I screwed this up in a216e6487255d3b65d97c7ec1fa5da63dbced902 --- src/qemu/qemu_cgroup.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
ACK.
diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c index f95c7f2..ace7e35 100644 --- a/src/qemu/qemu_cgroup.c +++ b/src/qemu/qemu_cgroup.c @@ -490,9 +490,10 @@ qemuSetupDevicesCgroup(virQEMUDriverPtr driver,
if (vm->def->nsounds && ((!vm->def->ngraphics && cfg->nogfxAllowHostAudio) || - ((vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC && + (vm->def->graphics && + ((vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC && cfg->vncAllowHostAudio) || - (vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL)))) { + (vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL))))) { rv = virCgroupAllowDeviceMajor(priv->cgroup, 'c', DEVICE_SND_MAJOR, VIR_CGROUP_DEVICE_RW); virDomainAuditCgroupMajor(vm, priv->cgroup, "allow", DEVICE_SND_MAJOR,
Thanks, pushed now. - Cole
participants (2)
-
Cole Robinson
-
Eric Blake