From 02b51cddfb244fbe3972b12fb3e05183e38879d8 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Wed, 9 Dec 2015 13:51:35 +0200 Subject: [PATCH] lib-storage: Fixed mail_search_args_simplify() with empty args. This fixes assert-crash in doveadm mailbox list. --- src/lib-storage/mail-search-args-simplify.c | 5 ++++- src/lib-storage/test-mail-search-args-simplify.c | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/lib-storage/mail-search-args-simplify.c b/src/lib-storage/mail-search-args-simplify.c index 8413ff188a..5dfc1605c5 100644 --- a/src/lib-storage/mail-search-args-simplify.c +++ b/src/lib-storage/mail-search-args-simplify.c @@ -344,6 +344,9 @@ mail_search_args_simplify_drop_redundent_args(struct mail_search_arg **argsp, unsigned int count, lowest_count = UINT_MAX; bool ret = FALSE; + if (*argsp == NULL) + return FALSE; + child_subargs_type = and_arg ? SEARCH_OR : SEARCH_SUB; /* find the arg which has the lowest number of child args */ @@ -399,7 +402,7 @@ mail_search_args_simplify_extract_common(struct mail_search_arg **argsp, struct mail_search_arg *new_arg, *child_arg, *common_args = NULL; enum mail_search_arg_type child_subargs_type; - if ((*argsp)->next == NULL) { + if (*argsp == NULL || (*argsp)->next == NULL) { /* single arg, nothing to extract */ return FALSE; } diff --git a/src/lib-storage/test-mail-search-args-simplify.c b/src/lib-storage/test-mail-search-args-simplify.c index 9ba5ca719c..80686e5985 100644 --- a/src/lib-storage/test-mail-search-args-simplify.c +++ b/src/lib-storage/test-mail-search-args-simplify.c @@ -202,10 +202,24 @@ static void test_mail_search_args_simplify(void) test_end(); } +static void test_mail_search_args_simplify_empty_lists(void) +{ + struct mail_search_args *args; + + test_begin("mail search args simplify empty args"); + + args = mail_search_build_init(); + mail_search_args_simplify(args); + mail_search_args_unref(&args); + + test_end(); +} + int main(void) { static void (*test_functions[])(void) = { test_mail_search_args_simplify, + test_mail_search_args_simplify_empty_lists, NULL }; -- 2.47.3