[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