diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index b63467bd915a3e4a6907c880aeb055d320aecf0f..5887939bd0a4a9f4a696832f943622bc59980205 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -8094,7 +8094,9 @@ qemu-kvm -net nic,model=? /dev/null
shmem
The shmem element has one mandatory attribute, - name to identify the shared memory. + name to identify the shared memory. This attribute cannot + be directory specific to . or .. as well as + it cannot involve path separator /.
model
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 7dcbe8a20bccc2361b46e4a2019f97086f17b838..adcd8f41b95f40dd24b4c779de29871a77563154 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -5747,6 +5747,31 @@ virDomainInputDefValidate(const virDomainInputDef *input) } +static int +virDomainShmemDefValidate(const virDomainShmemDef *shmem) +{ + if (strchr(shmem->name, '/')) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("shmem name cannot include '/' character")); + return -1; + } + + if (STREQ(shmem->name, ".")) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("shmem name cannot be equal to '.'")); + return -1; + } + + if (STREQ(shmem->name, "..")) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("shmem name cannot be equal to '..'")); + return -1; + } + + return 0; +} + + static int virDomainDeviceDefValidateInternal(const virDomainDeviceDef *dev, const virDomainDef *def) @@ -5788,6 +5813,9 @@ virDomainDeviceDefValidateInternal(const virDomainDeviceDef *dev, case VIR_DOMAIN_DEVICE_INPUT: return virDomainInputDefValidate(dev->data.input); + case VIR_DOMAIN_DEVICE_SHMEM: + return virDomainShmemDefValidate(dev->data.shmem); + case VIR_DOMAIN_DEVICE_LEASE: case VIR_DOMAIN_DEVICE_FS: case VIR_DOMAIN_DEVICE_SOUND: @@ -5796,7 +5824,6 @@ virDomainDeviceDefValidateInternal(const virDomainDeviceDef *dev, case VIR_DOMAIN_DEVICE_HUB: case VIR_DOMAIN_DEVICE_MEMBALLOON: case VIR_DOMAIN_DEVICE_NVRAM: - case VIR_DOMAIN_DEVICE_SHMEM: case VIR_DOMAIN_DEVICE_TPM: case VIR_DOMAIN_DEVICE_PANIC: case VIR_DOMAIN_DEVICE_IOMMU: