[Spice-devel] [PATCH] session: accept argument in URI without value

Marc-André Lureau mlureau at redhat.com
Thu Feb 26 07:44:55 PST 2015


----- Original Message -----
> The examples below should be considered valid URIs:
> 
> e.g: spice://localhost?port=5900&tls-port=
> e.g: spice://localhost?tls-port=&port=5900
> 
> This patch deals with arguments with empty value;

Looks good,

would you mind making a second patch to test parsing of a couple of valid and invalid URIs?

This will help when glib will finally have GUri support (we will still have to keep all URI parsing around for a while)

> ---
>  gtk/spice-session.c | 20 ++++++++++++++++++--
>  1 file changed, 18 insertions(+), 2 deletions(-)
> 
> diff --git a/gtk/spice-session.c b/gtk/spice-session.c
> index 82ea55f..607224b 100644
> --- a/gtk/spice-session.c
> +++ b/gtk/spice-session.c
> @@ -470,10 +470,26 @@ static int spice_parse_uri(SpiceSession *session, const
> char *original_uri)
>          gchar **target_key;
>  
>          int len;
> -        if (sscanf(query, "%31[-a-zA-Z0-9]=%127[^;&]%n", key, value, &len)
> != 2) {
> -            g_warning("Failed to parse URI query '%s'", query);
> +        if (sscanf(query, "%31[-a-zA-Z0-9]=%n", key, &len) != 1) {
> +            spice_warning("Failed to parse key in URI '%s'", query);
>              goto fail;
>          }
> +
> +        query += len;
> +        if (*query == '\0') {
> +            spice_warning ("key '%s' without value", key);
> +            break;
> +        } else if (*query == ';' || *query == '&') {
> +            /* another argument */
> +            query++;
> +            continue;
> +        }
> +
> +        if (sscanf(query, "%127[^;&]%n", value, &len) != 1) {
> +            spice_warning("Failed to parse value of key '%s' in URI '%s'",
> key, query);
> +            goto fail;
> +        }
> +
>          query += len;
>          if (*query)
>              query++;
> --
> 2.1.0
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
> 


More information about the Spice-devel mailing list