[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