----- 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@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/spice-devel > _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel