1
0
mirror of https://github.com/systemd/systemd.git synced 2025-01-10 05:18:17 +03:00

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-08 10:30:48 +10:00 committed by Zbigniew Jędrzejewski-Szmek
parent 0471921b3e
commit dc4b6f8d2c

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, '*', '?', '['))