dovecot-2.2: fts + lib-fts: Fixed crash with some search queries...

dovecot at dovecot.org dovecot at dovecot.org
Mon May 18 10:39:34 UTC 2015


details:   http://hg.dovecot.org/dovecot-2.2/rev/3d2bd49e6b4a
changeset: 18724:3d2bd49e6b4a
user:      Timo Sirainen <tss at iki.fi>
date:      Mon May 18 06:37:28 2015 -0400
description:
fts + lib-fts: Fixed crash with some search queries that contained uninitialized search args.

diffstat:

 src/plugins/fts/fts-search-args.c |  8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diffs (28 lines):

diff -r eafbf9a13bbd -r 3d2bd49e6b4a src/plugins/fts/fts-search-args.c
--- a/src/plugins/fts/fts-search-args.c	Mon May 18 06:36:56 2015 -0400
+++ b/src/plugins/fts/fts-search-args.c	Mon May 18 06:37:28 2015 -0400
@@ -183,11 +183,12 @@
 int fts_search_args_expand(struct fts_backend *backend,
 			   struct mail_search_args *args)
 {
-	struct mail_search_arg *args_dup;
+	struct mail_search_arg *args_dup, *orig_args = args->args;
 
 	/* duplicate the args, so if expansion fails we haven't changed
 	   anything */
 	args_dup = mail_search_arg_dup(args->pool, args->args);
+
 	if (fts_search_args_expand_tree(backend, args->pool, &args_dup) < 0)
 		return -1;
 
@@ -195,5 +196,10 @@
 	args->simplified = FALSE;
 	args->args = args_dup;
 	mail_search_args_simplify(args);
+
+	/* duplicated args aren't initialized */
+	i_assert(args->init_refcount > 0);
+	mail_search_arg_init(args, args_dup, FALSE, NULL);
+	mail_search_arg_deinit(orig_args);
 	return 0;
 }


More information about the dovecot-cvs mailing list