summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2018-03-13 11:53:02 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2018-03-13 11:53:43 +0000
commitb13e485c93c36fd37d5470756bc0f7d7bd44d018 (patch)
treeb436e450033b5b4f889a18eb54cb659d4061b8c9
parentb4d3cc05ba69320101da4e02e8d10f11063f2ff7 (diff)
downloadillumos-joyent-b13e485c93c36fd37d5470756bc0f7d7bd44d018.tar.gz
OS-6682 bhyve zones can destroy any VM
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com> Reviewed by: Mike Gerdts <mike.gerdts@joyent.com> Approved by: Patrick Mooney <patrick.mooney@joyent.com>
-rw-r--r--usr/src/uts/i86pc/io/vmm/vmm_sol_dev.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/usr/src/uts/i86pc/io/vmm/vmm_sol_dev.c b/usr/src/uts/i86pc/io/vmm/vmm_sol_dev.c
index 977987589f..602889b779 100644
--- a/usr/src/uts/i86pc/io/vmm/vmm_sol_dev.c
+++ b/usr/src/uts/i86pc/io/vmm/vmm_sol_dev.c
@@ -1611,6 +1611,9 @@ vmmdev_do_vm_destroy(const char *name, cred_t *cr)
vmm_softc_t *sc;
int err;
+ if (crgetuid(cr) != 0)
+ return (EPERM);
+
mutex_enter(&vmmdev_mtx);
mutex_enter(&vmm_mtx);
@@ -1619,6 +1622,15 @@ vmmdev_do_vm_destroy(const char *name, cred_t *cr)
mutex_exit(&vmmdev_mtx);
return (ENOENT);
}
+ /*
+ * We don't check this in vmm_lookup() since that function is also used
+ * for validation during create and currently vmm names must be unique.
+ */
+ if (!INGLOBALZONE(curproc) && sc->vmm_zone != curzone) {
+ mutex_exit(&vmm_mtx);
+ mutex_exit(&vmmdev_mtx);
+ return (EPERM);
+ }
err = vmm_do_vm_destroy_locked(sc, B_TRUE);
mutex_exit(&vmm_mtx);