diff --git a/libbb/compare_string_array.c b/libbb/compare_string_array.c index a06e57d3d..d8cd033a3 100644 --- a/libbb/compare_string_array.c +++ b/libbb/compare_string_array.c @@ -63,13 +63,19 @@ int FAST_FUNC index_in_str_array(const char *const string_array[], const char *k int FAST_FUNC index_in_strings(const char *strings, const char *key) { - int idx = 0; + int j, idx = 0; while (*strings) { - if (strcmp(strings, key) == 0) { - return idx; + /* Do we see "key\0" at current position in strings? */ + for (j = 0; *strings == key[j]; ++j) { + if (*strings++ == '\0') { + //bb_error_msg("found:'%s' i:%u", key, idx); + return idx; /* yes */ + } } - strings += strlen(strings) + 1; /* skip NUL */ + /* No. Move to the start of the next string. */ + while (*strings++ != '\0') + continue; idx++; } return -1;