From: Peter Hutterer Date: Fri, 8 Feb 2019 00:30:48 +0000 (+1000) Subject: sd-hwdb: fix matching for characters with an ord > 127 X-Git-Tag: v241~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=dc4b6f8d2c84fc1dcbbb250c573ab5902bbf3990;p=thirdparty%2Fsystemd.git sd-hwdb: fix matching for characters with an ord > 127 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. --- diff --git a/src/libsystemd/sd-hwdb/sd-hwdb.c b/src/libsystemd/sd-hwdb/sd-hwdb.c index b81786a64d4..233944c0782 100644 --- a/src/libsystemd/sd-hwdb/sd-hwdb.c +++ b/src/libsystemd/sd-hwdb/sd-hwdb.c @@ -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, '*', '?', '['))