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: