From: Martin Kletzander Date: Tue, 19 Jun 2012 10:08:49 +0000 (+0200) Subject: domain_conf: fix possible memory leak X-Git-Tag: v0.9.11.5~63 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=49cb53fae9caeaca61c23fbe747db3578f8abc01;p=thirdparty%2Flibvirt.git domain_conf: fix possible memory leak Until now, it was possible to crash libvirtd when defining domain with channel device with missing source element. When creating new virDomainChrDef, target.port is set to -1, but unfortunately it is an union with addresses that virDomainChrDefFree tries to free in case the deviceType is channel. Having the port set to -1 is intended, however the cleanest way to get around the problems with the crash seems to be renumbering the VIR_DOMAIN_CHR_CHANNEL_ target types to cover new NONE type (with value 0) being the default (no target type yet). (cherry picked from commit 830d035ff5a88c3896a6e508364e34697de941a1) --- diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index d886b60a84..95d0c3abc6 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -307,6 +307,7 @@ VIR_ENUM_IMPL(virDomainNetInterfaceLinkState, VIR_DOMAIN_NET_INTERFACE_LINK_STAT VIR_ENUM_IMPL(virDomainChrChannelTarget, VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_LAST, + "none", "guestfwd", "virtio") diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 1b8741e211..1e40968965 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -846,7 +846,8 @@ enum virDomainChrDeviceType { }; enum virDomainChrChannelTargetType { - VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_GUESTFWD = 0, + VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_NONE = 0, + VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_GUESTFWD, VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO, VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_LAST,