Antoine Pelisse <apelisse@xxxxxxxxx> writes: >> +static struct string_list_item *lookup_prefix(struct string_list *map, >> + const char *string, size_t len) >> +{ >> + int i = string_list_find_insert_index(map, string, 1); >> + if (i < 0) { >> + /* exact match */ >> + i = -1 - i; >> + /* does it match exactly? */ >> + if (!map->items[i].string[len]) >> + return &map->items[i]; > > I'm not sure the condition above is necessary, as I don't see why an > exact match would not be an exact match. You have a overlong string "ABCDEFG", but you only want to look for "ABCDEF", i.e. len=6. The string_list happens to have an existing string "ABCDEFG". The insert-index function will report an exact match, but that does not mean you found what you are looking for. For the particular case of "looking up e-mail from a string-list used for the mailmap, using a string that potentially has an extra '>' at the end", it may not be an issue (i.e. your overlong string would be "ABCDEF>", and the string-list used for the mailmap will not have an entry that ends with '>'), but it is likely that people will try to mimic this function or try to generalize and move it to strbuf.c and at that point, such a special case condition will no longer hold and the bug will manifest itself. Being defensive like the above is a way to avoid that. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html