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.
This commit is contained in:
Peter Hutterer
2019-02-13 23:19:20 +01:00
committed by Zbigniew Jędrzejewski-Szmek
parent 0471921b3e
commit dc4b6f8d2c
+1 -1
View 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, '*', '?', '['))