mirror of https://gitee.com/openkylin/libvirt.git
conf: virDomainDefValidateInternal prohibit some characters in shmem name
Validate that the provided XML shmem name is not directory specific to "." or ".." as well as ensure that there is no path separator '/' in the name. https://bugzilla.redhat.com/show_bug.cgi?id=1192400 Signed-off-by: Simon Kobyda <skobyda@redhat.com> Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
This commit is contained in:
parent
e63aa3c664
commit
9ff956b26a
|
@ -8094,7 +8094,9 @@ qemu-kvm -net nic,model=? /dev/null
|
|||
<dt><code>shmem</code></dt>
|
||||
<dd>
|
||||
The <code>shmem</code> element has one mandatory attribute,
|
||||
<code>name</code> to identify the shared memory.
|
||||
<code>name</code> to identify the shared memory. This attribute cannot
|
||||
be directory specific to <code>.</code> or <code>..</code> as well as
|
||||
it cannot involve path separator <code>/</code>.
|
||||
</dd>
|
||||
<dt><code>model</code></dt>
|
||||
<dd>
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue