]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-hwdb: fix matching for characters with an ord > 127
authorPeter Hutterer <peter.hutterer@who-t.net>
Fri, 8 Feb 2019 00:30:48 +0000 (10:30 +1000)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 13 Feb 2019 22:19:20 +0000 (23:19 +0100)
Devices like the "Microsoft Microsoft® 2.4GHz Transceiver v9.0 Mouse" contain
characters higher than 127. That ® is correctly stored in the hwdb and passed
into the search field during query, but the comparison fails.

Our search string is a const char *, trie_string() returns a const char * but
the current character is cast to uint8_t. This causes anything over 127 to
fail the match. Fix this, we're dealing with characters everywhere here after
all.

src/libsystemd/sd-hwdb/sd-hwdb.c

index b81786a64d42c08acb6adb3c071ed44fbb6a22ef..233944c0782013cc6d8764f574c2a11caa28d8fe 100644 (file)
@@ -240,7 +240,7 @@ static int trie_search_f(sd_hwdb *hwdb, const char *search) {
                 size_t p = 0;
 
                 if (node->prefix_off) {
-                        uint8_t c;
+                        char c;
 
                         for (; (c = trie_string(hwdb, node->prefix_off)[p]); p++) {
                                 if (IN_SET(c, '*', '?', '['))