From: Michal Privoznik Date: Thu, 21 Mar 2013 15:32:07 +0000 (+0100) Subject: security: Don't add seclabel of type none if there's already a seclabel X-Git-Tag: v1.0.4~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e4a28a328188e715de8d587b390cb44e2d6c3fb4;p=thirdparty%2Flibvirt.git security: Don't add seclabel of type none if there's already a seclabel https://bugzilla.redhat.com/show_bug.cgi?id=923946 The should be added iff there is no other seclabel defined within a domain. This bug can be easily reproduced: 1) configure selinux seclabel for a domain 2) disable system's selinux and restart libvirtd 3) observe being appended to a domain on its startup --- diff --git a/src/security/security_manager.c b/src/security/security_manager.c index 5c2a95b699..b55af6968d 100644 --- a/src/security/security_manager.c +++ b/src/security/security_manager.c @@ -455,11 +455,16 @@ int virSecurityManagerGenLabel(virSecurityManagerPtr mgr, } } - if ((seclabel->type == VIR_DOMAIN_SECLABEL_NONE) && - sec_managers[i]->requireConfined) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("Unconfined guests are not allowed on this host")); - goto cleanup; + if (seclabel->type == VIR_DOMAIN_SECLABEL_NONE) { + if (sec_managers[i]->requireConfined) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Unconfined guests are not allowed on this host")); + goto cleanup; + } else if (vm->nseclabels && generated) { + VIR_DEBUG("Skipping auto generated seclabel of type none"); + virSecurityLabelDefFree(seclabel); + continue; + } } if (!sec_managers[i]->drv->domainGenSecurityLabel) {