changeset 8924:f38765916f6d HEAD

quota: Don't crash when modifying non-private namespaces.
author Timo Sirainen <tss@iki.fi>
date Tue, 07 Apr 2009 12:26:50 -0400
parents 5040d7cb1335
children 4907cc591449
files src/plugins/quota/quota-storage.c
diffstat 1 files changed, 15 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/quota/quota-storage.c	Mon Apr 06 17:20:20 2009 -0400
+++ b/src/plugins/quota/quota-storage.c	Tue Apr 07 12:26:50 2009 -0400
@@ -513,21 +513,22 @@
 	union mail_storage_module_context *qstorage;
 	struct quota *quota;
 
+	if (qlist == NULL)
+		return;
+
 	qlist->storage = storage;
 
-	qstorage = p_new(storage->pool, union mail_storage_module_context, 1);
+	qstorage = p_new(storage->pool,
+			 union mail_storage_module_context, 1);
 	qstorage->super = storage->v;
 	storage->v.destroy = quota_storage_destroy;
 	storage->v.mailbox_open = quota_mailbox_open;
 
 	MODULE_CONTEXT_SET_SELF(storage, quota_storage_module, qstorage);
 
-	if (storage->ns->owner != NULL &&
-	    (storage->ns->flags & NAMESPACE_FLAG_INTERNAL) == 0) {
-		/* register to owner's quota roots */
-		quota = quota_get_mail_user_quota(storage->ns->owner);
-		quota_add_user_storage(quota, storage);
-	}
+	/* register to owner's quota roots */
+	quota = quota_get_mail_user_quota(storage->ns->owner);
+	quota_add_user_storage(quota, storage);
 
 	if (quota_next_hook_mail_storage_created != NULL)
 		quota_next_hook_mail_storage_created(storage);
@@ -537,12 +538,14 @@
 {
 	struct quota_mailbox_list *qlist;
 
-	qlist = p_new(list->pool, struct quota_mailbox_list, 1);
-	qlist->module_ctx.super = list->v;
-	list->v.delete_mailbox = quota_mailbox_list_delete;
+	if (list->ns->owner != NULL &&
+	    (list->ns->flags & NAMESPACE_FLAG_INTERNAL) == 0) {
+		qlist = p_new(list->pool, struct quota_mailbox_list, 1);
+		qlist->module_ctx.super = list->v;
+		list->v.delete_mailbox = quota_mailbox_list_delete;
 
-	MODULE_CONTEXT_SET(list, quota_mailbox_list_module, qlist);
-
+		MODULE_CONTEXT_SET(list, quota_mailbox_list_module, qlist);
+	}
 	if (quota_next_hook_mailbox_list_created != NULL)
 		quota_next_hook_mailbox_list_created(list);
 }