Mercurial > dovecot > original-hg > dovecot-1.2
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); }