From: Timo Sirainen Date: Thu, 27 Apr 2017 09:53:18 +0000 (+0300) Subject: lib-storage: Fix searching when search query has invalid keywords. X-Git-Tag: 2.2.30.rc1~68 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0674091f8fd1eaaa275cca6a0f3f4c4c8c31a6e1;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Fix searching when search query has invalid keywords. For example "SEARCH KEYWORD ]" was returning all mails instead of nothing. --- 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;