From: Michal Privoznik Date: Thu, 22 Jun 2017 11:51:58 +0000 (+0200) Subject: security: Don't skip relabel for all chardevs X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=e0d1a378dca1656925da1f53ea3e9de13dbed0f8;p=libvirt.git security: Don't skip relabel for all chardevs Our commit e13e8808f9 was way too generic. Currently, virtlogd is used only for chardevs type of file and nothing else. True, we must not relabel the path in this case, but we have to in all other cases. For instance, if you want to have a physical console attached to your guest: Starting such domain fails because qemu doesn't have access to /dev/ttyS0 because we haven't relabelled the path. Signed-off-by: Michal Privoznik Reviewed-by: John Ferlan --- diff --git a/src/security/security_dac.c b/src/security/security_dac.c index 79941f480a..ca7a6af6d4 100644 --- a/src/security/security_dac.c +++ b/src/security/security_dac.c @@ -1179,7 +1179,9 @@ virSecurityDACSetChardevLabel(virSecurityManagerPtr mgr, if (chr_seclabel && !chr_seclabel->relabel) return 0; - if (!chr_seclabel && chardevStdioLogd) + if (!chr_seclabel && + dev_source->type == VIR_DOMAIN_CHR_TYPE_FILE && + chardevStdioLogd) return 0; if (chr_seclabel && chr_seclabel->label) { @@ -1261,7 +1263,9 @@ virSecurityDACRestoreChardevLabel(virSecurityManagerPtr mgr, if (chr_seclabel && !chr_seclabel->relabel) return 0; - if (!chr_seclabel && chardevStdioLogd) + if (!chr_seclabel && + dev_source->type == VIR_DOMAIN_CHR_TYPE_FILE && + chardevStdioLogd) return 0; switch ((virDomainChrType) dev_source->type) { diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c index 26137f6d8d..2e3082b7a8 100644 --- a/src/security/security_selinux.c +++ b/src/security/security_selinux.c @@ -2199,7 +2199,9 @@ virSecuritySELinuxSetChardevLabel(virSecurityManagerPtr mgr, if (chr_seclabel && !chr_seclabel->relabel) return 0; - if (!chr_seclabel && chardevStdioLogd) + if (!chr_seclabel && + dev_source->type == VIR_DOMAIN_CHR_TYPE_FILE && + chardevStdioLogd) return 0; if (chr_seclabel) @@ -2274,7 +2276,9 @@ virSecuritySELinuxRestoreChardevLabel(virSecurityManagerPtr mgr, if (chr_seclabel && !chr_seclabel->relabel) return 0; - if (!chr_seclabel && chardevStdioLogd) + if (!chr_seclabel && + dev_source->type == VIR_DOMAIN_CHR_TYPE_FILE && + chardevStdioLogd) return 0; switch (dev_source->type) {