dovecot-2.0: module_dir_load(): Ignore duplicates in module names.

dovecot at dovecot.org dovecot at dovecot.org
Fri Jul 2 20:58:58 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/e586c030e430
changeset: 11715:e586c030e430
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Jul 02 18:58:55 2010 +0100
description:
module_dir_load(): Ignore duplicates in module names.

diffstat:

 src/lib/module-dir.c |  10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

diffs (25 lines):

diff -r 1683324ac632 -r e586c030e430 src/lib/module-dir.c
--- a/src/lib/module-dir.c	Fri Jul 02 18:47:43 2010 +0100
+++ b/src/lib/module-dir.c	Fri Jul 02 18:58:55 2010 +0100
@@ -250,12 +250,20 @@
 
 static void module_names_fix(const char **module_names)
 {
-	unsigned int i;
+	unsigned int i, j;
 
 	/* allow giving the module names also in non-base form.
 	   convert them in here. */
 	for (i = 0; module_names[i] != NULL; i++)
 		module_names[i] = module_file_get_name(module_names[i]);
+
+	/* @UNSAFE: drop duplicates */
+	qsort(module_names, i, sizeof(*module_names), i_strcmp_p);
+	for (i = j = 1; module_names[i] != NULL; i++) {
+		if (strcmp(module_names[i-1], module_names[i]) != 0)
+			module_names[j++] = module_names[i];
+	}
+	module_names[j] = NULL;
 }
 
 static bool


More information about the dovecot-cvs mailing list