]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Fixed mail_search_args_simplify() with empty args.
authorTimo Sirainen <tss@iki.fi>
Wed, 9 Dec 2015 11:51:35 +0000 (13:51 +0200)
committerTimo Sirainen <tss@iki.fi>
Wed, 9 Dec 2015 11:51:35 +0000 (13:51 +0200)
This fixes assert-crash in doveadm mailbox list.

src/lib-storage/mail-search-args-simplify.c
src/lib-storage/test-mail-search-args-simplify.c

index 8413ff188a9bb9b14af64f748f4bb48bb8454c0a..5dfc1605c55685e3ce9ed28c7549e3d31d89b7db 100644 (file)
@@ -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;
        }
index 9ba5ca719cf6933bfcc3069b2901fb57dd0393cf..80686e598578b36c028df722e72c57b9456caab7 100644 (file)
@@ -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
        };