From 1c06d0faba152170de664f3ff4017cf4b59b44e4 Mon Sep 17 00:00:00 2001 From: Martin Kletzander Date: Wed, 1 Feb 2017 17:14:00 +0100 Subject: [PATCH] qemu: Forbid slashes in shmem name With that users could access files outside /dev/shm. That itself isn't a security problem, but might cause some errors we want to avoid. So let's forbid slashes as we do with domain and volume names and also mention that in the schema. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1395496 Signed-off-by: Martin Kletzander --- docs/schemas/domaincommon.rng | 6 +++++- src/qemu/qemu_process.c | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index c5f101325e..c64544ac47 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -3633,7 +3633,11 @@ - + + + [^/]* + + diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 522f49d8b7..8508a6dee9 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -4589,6 +4589,25 @@ qemuProcessStartValidateIOThreads(virDomainObjPtr vm, } +qemuProcessStartValidateShmem(virDomainObjPtr vm) +{ + size_t i; + + for (i = 0; i < vm->def->nshmems; i++) { + virDomainShmemDefPtr shmem = vm->def->shmems[i]; + + if (strchr(shmem->name, '/')) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("shmem name '%s' must not contain '/'"), + shmem->name); + return -1; + } + } + + return 0; +} + + static int qemuProcessStartValidateXML(virQEMUDriverPtr driver, virDomainObjPtr vm, @@ -4668,6 +4687,9 @@ qemuProcessStartValidate(virQEMUDriverPtr driver, if (qemuProcessStartValidateIOThreads(vm, qemuCaps) < 0) return -1; + if (qemuProcessStartValidateShmem(vm) < 0) + return -1; + VIR_DEBUG("Checking for any possible (non-fatal) issues"); qemuProcessStartWarnShmem(vm);