[libvirt] [PATCH 1/2] Forbid new-line char in name of new domain
Michal Privoznik
mprivozn at redhat.com
Tue Nov 22 13:37:01 UTC 2016
On 11.11.2016 10:17, Sławek Kapłoński wrote:
> New line character in name of domain is now forbidden because it
> mess virsh output and can be confusing for users.
> Validation of name is done in drivers, after parsing XML to avoid
> problems with dissappeared domains which was already created with
> new-line char in name.
> ---
> src/bhyve/bhyve_driver.c | 3 +++
> src/esx/esx_driver.c | 3 +++
> src/libxl/libxl_driver.c | 3 +++
> src/lxc/lxc_driver.c | 3 +++
> src/openvz/openvz_driver.c | 3 +++
> src/qemu/qemu_driver.c | 3 +++
> src/test/test_driver.c | 3 +++
> src/uml/uml_driver.c | 3 +++
> src/vmware/vmware_driver.c | 3 +++
> src/vz/vz_driver.c | 3 +++
> src/xen/xen_driver.c | 3 +++
> src/xenapi/xenapi_driver.c | 3 +++
> 12 files changed, 36 insertions(+)
>
> diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c
> index 38fb9f0..17f8524 100644
> --- a/src/bhyve/bhyve_driver.c
> +++ b/src/bhyve/bhyve_driver.c
> @@ -541,6 +541,9 @@ bhyveDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flag
> NULL, parse_flags)) == NULL)
> goto cleanup;
>
> + if (virXMLCheckIllegalChars("name", def->name, "\n") < 0)
> + goto cleanup;
> +
> if (virDomainDefineXMLFlagsEnsureACL(conn, def) < 0)
> goto cleanup;
>
> diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c
> index 17ef00f..166d4bc 100644
> --- a/src/esx/esx_driver.c
> +++ b/src/esx/esx_driver.c
> @@ -3051,6 +3051,9 @@ esxDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flags)
> if (!def)
> return NULL;
>
> + if (virXMLCheckIllegalChars("name", def->name, "\n") < 0)
> + goto cleanup;
> +
> /* Check if an existing domain should be edited */
> if (esxVI_LookupVirtualMachineByUuid(priv->primary, def->uuid, NULL,
> &virtualMachine,
> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
> index b2f3b16..3efa91e 100644
> --- a/src/libxl/libxl_driver.c
> +++ b/src/libxl/libxl_driver.c
> @@ -2791,6 +2791,9 @@ libxlDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flag
> NULL, parse_flags)))
> goto cleanup;
>
> + if (virXMLCheckIllegalChars("name", def->name, "\n") < 0)
> + goto cleanup;
> +
> if (virDomainDefineXMLFlagsEnsureACL(conn, def) < 0)
> goto cleanup;
>
> diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
> index 4a0165a..a6776a1 100644
> --- a/src/lxc/lxc_driver.c
> +++ b/src/lxc/lxc_driver.c
> @@ -475,6 +475,9 @@ lxcDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flags)
> NULL, parse_flags)))
> goto cleanup;
>
> + if (virXMLCheckIllegalChars("name", def->name, "\n") < 0)
> + goto cleanup;
> +
> if (virDomainDefineXMLFlagsEnsureACL(conn, def) < 0)
> goto cleanup;
>
> diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c
> index 38a562e..1dfb1cc 100644
> --- a/src/openvz/openvz_driver.c
> +++ b/src/openvz/openvz_driver.c
> @@ -1000,6 +1000,9 @@ openvzDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int fla
> NULL, parse_flags)) == NULL)
> goto cleanup;
>
> + if (virXMLCheckIllegalChars("name", vmdef->name, "\n") < 0)
> + goto cleanup;
> +
> if (!(vm = virDomainObjListAdd(driver->domains, vmdef,
> driver->xmlopt,
> 0, NULL)))
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index a82e58b..8d337eb 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -7339,6 +7339,9 @@ qemuDomainDefineXMLFlags(virConnectPtr conn,
> NULL, parse_flags)))
> goto cleanup;
>
> + if (virXMLCheckIllegalChars("name", def->name, "\n") < 0)
> + goto cleanup;
> +
> if (virDomainDefineXMLFlagsEnsureACL(conn, def) < 0)
> goto cleanup;
>
> diff --git a/src/test/test_driver.c b/src/test/test_driver.c
> index 236874f..1b54839 100644
> --- a/src/test/test_driver.c
> +++ b/src/test/test_driver.c
> @@ -2641,6 +2641,9 @@ static virDomainPtr testDomainDefineXMLFlags(virConnectPtr conn,
> NULL, parse_flags)) == NULL)
> goto cleanup;
>
> + if (virXMLCheckIllegalChars("name", def->name, "\n") < 0)
> + goto cleanup;
> +
> if (testDomainGenerateIfnames(def) < 0)
> goto cleanup;
> if (!(dom = virDomainObjListAdd(privconn->domains,
> diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c
> index 4f4a69b..ad89e3e 100644
> --- a/src/uml/uml_driver.c
> +++ b/src/uml/uml_driver.c
> @@ -2074,6 +2074,9 @@ umlDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flags)
> NULL, parse_flags)))
> goto cleanup;
>
> + if (virXMLCheckIllegalChars("name", def->name, "\n") < 0)
> + goto cleanup;
> +
> if (virDomainDefineXMLFlagsEnsureACL(conn, def) < 0)
> goto cleanup;
>
> diff --git a/src/vmware/vmware_driver.c b/src/vmware/vmware_driver.c
> index 9a53b8d..d3497bd 100644
> --- a/src/vmware/vmware_driver.c
> +++ b/src/vmware/vmware_driver.c
> @@ -392,6 +392,9 @@ vmwareDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int fla
> NULL, parse_flags)) == NULL)
> goto cleanup;
>
> + if (virXMLCheckIllegalChars("name", vmdef->name, "\n") < 0)
> + goto cleanup;
> +
> /* generate vmx file */
> vmx = virVMXFormatConfig(&ctx, driver->xmlopt, vmdef, 7);
> if (vmx == NULL)
> diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c
> index b7c37bb..7cd89a0 100644
> --- a/src/vz/vz_driver.c
> +++ b/src/vz/vz_driver.c
> @@ -854,6 +854,9 @@ vzDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flags)
> NULL, parse_flags)) == NULL)
> goto cleanup;
>
> + if (virXMLCheckIllegalChars("name", def->name, "\n") < 0)
> + goto cleanup;
> +
> if (virDomainDefineXMLFlagsEnsureACL(conn, def) < 0)
> goto cleanup;
>
> diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c
> index 188c2d1..3f9bfa7 100644
> --- a/src/xen/xen_driver.c
> +++ b/src/xen/xen_driver.c
> @@ -1810,6 +1810,9 @@ xenUnifiedDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int
> NULL, parse_flags)))
> goto cleanup;
>
> + if (virXMLCheckIllegalChars("name", def->name, "\n") < 0)
> + goto cleanup;
> +
> if (virDomainDefineXMLFlagsEnsureACL(conn, def) < 0)
> goto cleanup;
>
> diff --git a/src/xenapi/xenapi_driver.c b/src/xenapi/xenapi_driver.c
> index dcb79aa..eedfc17 100644
> --- a/src/xenapi/xenapi_driver.c
> +++ b/src/xenapi/xenapi_driver.c
> @@ -1759,6 +1759,9 @@ xenapiDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int fla
> if (!defPtr)
> return NULL;
>
> + if (virXMLCheckIllegalChars("name", defPtr->name, "\n") < 0)
> + goto cleanup;
> +
This breaks the build. There's no cleanup label.
> if (createVMRecordFromXml(conn, defPtr, &record, &vm) != 0) {
> if (!priv->session->ok)
> xenapiSessionErrorHandler(conn, VIR_ERR_INTERNAL_ERROR, NULL);
>
Michal
More information about the libvir-list
mailing list