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.3.0.rc1~1685 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=483e8d4974b5f0751866d9dbfc0e1e78f8a40664;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 b8f2f3ba9f..04c643f662 100644 --- a/src/lib-storage/index/index-search.c +++ b/src/lib-storage/index/index-search.c @@ -159,6 +159,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 b98d6004da..83d4dc9e51 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;