If a change query is done for an account with the 'Full Name <email>'
format, Gerrit first finds accounts that match the email. If there are
multiple accounts that match the email, Gerrit only returns the matches
where also the full name matches. This logic to match on the full name
run into a StringIndexOutOfBoundsException when the input string was an
email surrounded by '<' and '>', e.g. "<foo.bar@example.com>". Such an
input string is deteced as 'Full Name <email>' format but then parsing
the full name in front of '<' failed because it is not present in the
input string.
Stacktrace:
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1969)
at com.google.gerrit.server.account.AccountResolver$ByNameAndEmail.search(AccountResolver.java:349)
at com.google.gerrit.server.account.AccountResolver$ByNameAndEmail.search(AccountResolver.java:328)
at com.google.gerrit.server.account.AccountResolver$Searcher.trySearch(AccountResolver.java:227)
at com.google.gerrit.server.account.AccountResolver.searchImpl(AccountResolver.java:595)
at com.google.gerrit.server.account.AccountResolver.resolve(AccountResolver.java:519)
at com.google.gerrit.server.query.change.ChangeQueryBuilder.parseAccount(ChangeQueryBuilder.java:1394)
at com.google.gerrit.server.query.change.ChangeQueryBuilder.ownerDefaultField(ChangeQueryBuilder.java:1034)
at com.google.gerrit.server.query.change.ChangeQueryBuilder.defaultField(ChangeQueryBuilder.java:1320)
at com.google.gerrit.index.query.QueryBuilder.toPredicate(QueryBuilder.java:258)
at com.google.gerrit.index.query.QueryBuilder.children(QueryBuilder.java:331)
at com.google.gerrit.index.query.QueryBuilder.toPredicate(QueryBuilder.java:251)
at com.google.gerrit.index.query.QueryBuilder.parse(QueryBuilder.java:224)
at com.google.gerrit.index.query.QueryBuilder.parse(QueryBuilder.java:243)
at com.google.gerrit.server.restapi.change.QueryChanges.query(QueryChanges.java:166)
at com.google.gerrit.server.restapi.change.QueryChanges.apply(QueryChanges.java:130)
at com.google.gerrit.server.restapi.change.QueryChanges.apply(QueryChanges.java:45)
...
Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: Id03b16fedd6b31ac2666d165a0627a46c163f3c7