From e4a28a328188e715de8d587b390cb44e2d6c3fb4 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Thu, 21 Mar 2013 16:32:07 +0100 Subject: [PATCH] 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 --- src/security/security_manager.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) 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) { -- GitLab