diff --git a/src/lib-storage/index/index-search.c b/src/lib-storage/index/index-search.c index cc764cc64b..3da36f77e5 100644 --- a/src/lib-storage/index/index-search.c +++ b/src/lib-storage/index/index-search.c @@ -158,6 +158,11 @@ static int search_arg_match_keywords(struct index_search_context *ctx, const unsigned int *keyword_indexes; unsigned int i, j, count; + if (search_kws->count == 0) { + /* invalid keyword - never matches */ + return 0; + } + t_array_init(&keyword_indexes_arr, 128); mail_index_lookup_keywords(ctx->view, ctx->mail_ctx.seq, &keyword_indexes_arr); diff --git a/src/lib-storage/mail-search.h b/src/lib-storage/mail-search.h index 384e762137..e22e2c8d2e 100644 --- a/src/lib-storage/mail-search.h +++ b/src/lib-storage/mail-search.h @@ -109,6 +109,8 @@ struct mail_search_arg { /* set by mail_search_args_init(): */ struct { struct mail_search_args *search_args; + /* Note that initialized keywords may be empty if the keyword + wasn't valid in this mailbox. */ struct mail_keywords *keywords; struct imap_match_glob *mailbox_glob; } initialized;