Mercurial > dovecot > core-2.2
changeset 9857:0830fbbdfecd HEAD
settings: Don't crash if no namespaces or services have been created.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 02 Sep 2009 17:45:35 -0400 |
parents | 6103d925e018 |
children | 2e502c0e23e7 |
files | src/lib-storage/mail-storage-settings.c src/master/master-settings.c |
diffstat | 2 files changed, 10 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/mail-storage-settings.c Wed Sep 02 16:48:06 2009 -0400 +++ b/src/lib-storage/mail-storage-settings.c Wed Sep 02 17:45:35 2009 -0400 @@ -347,7 +347,13 @@ } if (ns->alias_for != NULL) { - namespaces = array_get(&ns->user_set->namespaces, &count); + if (array_is_created(&ns->user_set->namespaces)) { + namespaces = array_get(&ns->user_set->namespaces, + &count); + } else { + namespaces = NULL; + count = 0; + } for (i = 0; i < count; i++) { if (strcmp(namespaces[i]->prefix, ns->alias_for) == 0) break;
--- a/src/master/master-settings.c Wed Sep 02 16:48:06 2009 -0400 +++ b/src/master/master-settings.c Wed Sep 02 17:45:35 2009 -0400 @@ -278,11 +278,12 @@ /* check that we have at least one service. the actual service structure validity is checked later while creating them. */ - services = array_get(&set->services, &count); - if (count == 0) { + if (!array_is_created(&set->services) || + array_count(&set->services) == 0) { *error_r = "No services defined"; return FALSE; } + services = array_get(&set->services, &count); for (i = 0; i < count; i++) { if (*services[i]->name == '\0') { *error_r = t_strdup_printf(