[PATCH] fix bug in name_list_key_add()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The search for an existing key e.g. FOO would match longer keys e.g. FOOBAR.
Reuse the correct code from name_list_remove().

diff --git a/udev/udev_utils.c b/udev/udev_utils.c
index f63a9fa..9b6ba24 100644
--- a/udev/udev_utils.c
+++ b/udev/udev_utils.c
@@ -89,14 +89,17 @@ struct name_entry *name_list_key_add(struct list_head *name_list, const char *ke
 {
 	struct name_entry *name_loop;
 	struct name_entry *name_new;
+	size_t keylen = strlen(key);
 
 	list_for_each_entry(name_loop, name_list, node) {
-		if (strncmp(name_loop->name, key, strlen(key)) == 0) {
-			dbg("key already present '%s', replace it\n", name_loop->name);
-			snprintf(name_loop->name, sizeof(name_loop->name), "%s=%s", key, value);
-			name_loop->name[sizeof(name_loop->name)-1] = '\0';
-			return name_loop;
-		}
+		if (strncmp(name_loop->name, key, keylen) != 0)
+			continue;
+		if (name_loop->name[keylen] != '=')
+			continue;
+		dbg("key already present '%s', replace it\n", name_loop->name);
+		snprintf(name_loop->name, sizeof(name_loop->name), "%s=%s", key, value);
+		name_loop->name[sizeof(name_loop->name)-1] = '\0';
+		return name_loop;
 	}
 
 	name_new = malloc(sizeof(struct name_entry));


--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Linux DVB]     [Asterisk Internet PBX]     [DCCP]     [Netdev]     [X.org]     [Util Linux NG]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux