render / rpms / libvirt

Forked from rpms/libvirt 7 months ago
Clone
Cole Robinson f4bfe6
From 3f1aa08af6580c215d973bc6bf57f505dbf8b926 Mon Sep 17 00:00:00 2001
Cole Robinson f4bfe6
From: Cole Robinson <crobinso@redhat.com>
Cole Robinson f4bfe6
Date: Fri, 12 Mar 2010 13:38:39 -0500
Cole Robinson f4bfe6
Subject: [PATCH] security: Set permissions for kernel/initrd
Cole Robinson f4bfe6
Cole Robinson f4bfe6
Fixes URL installs when running virt-install as root on Fedora.
Cole Robinson f4bfe6
---
Cole Robinson f4bfe6
 src/qemu/qemu_security_dac.c    |   21 +++++++++++++++++++++
Cole Robinson f4bfe6
 src/security/security_selinux.c |   16 ++++++++++++++++
Cole Robinson f4bfe6
 2 files changed, 37 insertions(+), 0 deletions(-)
Cole Robinson f4bfe6
Cole Robinson f4bfe6
diff --git a/src/qemu/qemu_security_dac.c b/src/qemu/qemu_security_dac.c
Cole Robinson f4bfe6
index 6911f48..1883fbe 100644
Cole Robinson f4bfe6
--- a/src/qemu/qemu_security_dac.c
Cole Robinson f4bfe6
+++ b/src/qemu/qemu_security_dac.c
Cole Robinson f4bfe6
@@ -332,6 +332,15 @@ qemuSecurityDACRestoreSecurityAllLabel(virDomainObjPtr vm)
Cole Robinson f4bfe6
                                                      vm->def->disks[i]) < 0)
Cole Robinson f4bfe6
             rc = -1;
Cole Robinson f4bfe6
     }
Cole Robinson f4bfe6
+
Cole Robinson f4bfe6
+    if (vm->def->os.kernel &&
Cole Robinson f4bfe6
+        qemuSecurityDACRestoreSecurityFileLabel(vm->def->os.kernel) < 0)
Cole Robinson f4bfe6
+        rc = -1;
Cole Robinson f4bfe6
+
Cole Robinson f4bfe6
+    if (vm->def->os.initrd &&
Cole Robinson f4bfe6
+        qemuSecurityDACRestoreSecurityFileLabel(vm->def->os.initrd) < 0)
Cole Robinson f4bfe6
+        rc = -1;
Cole Robinson f4bfe6
+
Cole Robinson f4bfe6
     return rc;
Cole Robinson f4bfe6
 }
Cole Robinson f4bfe6
 
Cole Robinson f4bfe6
@@ -356,6 +365,18 @@ qemuSecurityDACSetSecurityAllLabel(virDomainObjPtr vm)
Cole Robinson f4bfe6
             return -1;
Cole Robinson f4bfe6
     }
Cole Robinson f4bfe6
 
Cole Robinson f4bfe6
+    if (vm->def->os.kernel &&
Cole Robinson f4bfe6
+        qemuSecurityDACSetOwnership(vm->def->os.kernel,
Cole Robinson f4bfe6
+                                    driver->user,
Cole Robinson f4bfe6
+                                    driver->group) < 0)
Cole Robinson f4bfe6
+        return -1;
Cole Robinson f4bfe6
+
Cole Robinson f4bfe6
+    if (vm->def->os.initrd &&
Cole Robinson f4bfe6
+        qemuSecurityDACSetOwnership(vm->def->os.initrd,
Cole Robinson f4bfe6
+                                    driver->user,
Cole Robinson f4bfe6
+                                    driver->group) < 0)
Cole Robinson f4bfe6
+        return -1;
Cole Robinson f4bfe6
+
Cole Robinson f4bfe6
     return 0;
Cole Robinson f4bfe6
 }
Cole Robinson f4bfe6
 
Cole Robinson f4bfe6
diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c
Cole Robinson f4bfe6
index b2c8581..975b315 100644
Cole Robinson f4bfe6
--- a/src/security/security_selinux.c
Cole Robinson f4bfe6
+++ b/src/security/security_selinux.c
Cole Robinson f4bfe6
@@ -616,6 +616,14 @@ SELinuxRestoreSecurityAllLabel(virDomainObjPtr vm)
Cole Robinson f4bfe6
             rc = -1;
Cole Robinson f4bfe6
     }
Cole Robinson f4bfe6
 
Cole Robinson f4bfe6
+    if (vm->def->os.kernel &&
Cole Robinson f4bfe6
+        SELinuxRestoreSecurityFileLabel(vm->def->os.kernel) < 0)
Cole Robinson f4bfe6
+        rc = -1;
Cole Robinson f4bfe6
+
Cole Robinson f4bfe6
+    if (vm->def->os.initrd &&
Cole Robinson f4bfe6
+        SELinuxRestoreSecurityFileLabel(vm->def->os.initrd) < 0)
Cole Robinson f4bfe6
+        rc = -1;
Cole Robinson f4bfe6
+
Cole Robinson f4bfe6
     return rc;
Cole Robinson f4bfe6
 }
Cole Robinson f4bfe6
 
Cole Robinson f4bfe6
@@ -736,6 +744,14 @@ SELinuxSetSecurityAllLabel(virDomainObjPtr vm)
Cole Robinson f4bfe6
             return -1;
Cole Robinson f4bfe6
     }
Cole Robinson f4bfe6
 
Cole Robinson f4bfe6
+    if (vm->def->os.kernel &&
Cole Robinson f4bfe6
+        SELinuxSetFilecon(vm->def->os.kernel, default_content_context) < 0)
Cole Robinson f4bfe6
+        return -1;
Cole Robinson f4bfe6
+
Cole Robinson f4bfe6
+    if (vm->def->os.initrd &&
Cole Robinson f4bfe6
+        SELinuxSetFilecon(vm->def->os.initrd, default_content_context) < 0)
Cole Robinson f4bfe6
+        return -1;
Cole Robinson f4bfe6
+
Cole Robinson f4bfe6
     return 0;
Cole Robinson f4bfe6
 }
Cole Robinson f4bfe6
 
Cole Robinson f4bfe6
-- 
Cole Robinson f4bfe6
1.6.6.1
Cole Robinson f4bfe6