[Spice-devel] [PATCH 1/3] session: accept argument in URI without value
Victor Toso
victortoso at redhat.com
Fri Feb 27 07:35:47 PST 2015
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;
---
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
More information about the Spice-devel
mailing list