Create proper regex if target is an UUID
authorJens Georg <mail@jensge.org>
Wed, 16 Nov 2011 13:04:06 +0000 (14:04 +0100)
committerJens Georg <mail@jensge.org>
Wed, 16 Nov 2011 13:08:12 +0000 (14:08 +0100)
This patch only appends the version regex if:
 - the target doesn't start with "uuid:"
 - the target starts with "uuid:", but has another colon later on
 - the string after the colon consists of numbers

The matching was changed to match numbers starting after the colon, not
just somewhere after the column.

https://bugzilla.gnome.org/show_bug.cgi?id=664177

libgssdp/gssdp-resource-browser.c

index 1199a25..0a9621b 100644 (file)
@@ -460,7 +460,12 @@ gssdp_resource_browser_set_target (GSSDPResourceBrowser *resource_browser,
 
         version = g_strrstr (pattern, ":");
         if (version != NULL &&
-            g_regex_match_simple (version_pattern, version + 1, 0, 0)) {
+            (g_strstr_len (pattern, -1, "uuid:") != pattern ||
+             version != g_strstr_len (pattern, -1, ":")) &&
+            g_regex_match_simple (version_pattern,
+                                  version + 1,
+                                  G_REGEX_MATCH_ANCHORED,
+                                  0)) {
                 strcpy (version + 1, version_pattern);
         }