dovecot-2.2: lib-storage: Don't crash if backend doesn't have su...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Jun 12 21:25:21 EEST 2013
details: http://hg.dovecot.org/dovecot-2.2/rev/4b9a43201a71
changeset: 16497:4b9a43201a71
user: Timo Sirainen <tss at iki.fi>
date: Wed Jun 12 21:25:09 2013 +0300
description:
lib-storage: Don't crash if backend doesn't have subscriptions file.
diffstat:
src/lib-storage/list/mailbox-list-fs-iter.c | 3 ++-
src/lib-storage/list/mailbox-list-fs.c | 6 ++++++
src/lib-storage/list/mailbox-list-index-backend.c | 6 ++++++
src/lib-storage/list/mailbox-list-maildir.c | 6 ++++++
src/lib-storage/list/mailbox-list-subscriptions.c | 3 ++-
5 files changed, 22 insertions(+), 2 deletions(-)
diffs (74 lines):
diff -r 7057dfeaeb1a -r 4b9a43201a71 src/lib-storage/list/mailbox-list-fs-iter.c
--- a/src/lib-storage/list/mailbox-list-fs-iter.c Wed Jun 12 21:16:06 2013 +0300
+++ b/src/lib-storage/list/mailbox-list-fs-iter.c Wed Jun 12 21:25:09 2013 +0300
@@ -153,7 +153,8 @@
dir->info_flags |= MAILBOX_SELECT;
return 0;
}
- if (strcmp(d->d_name, ctx->ctx.list->set.subscription_fname) == 0) {
+ if (ctx->ctx.list->set.subscription_fname != NULL &&
+ strcmp(d->d_name, ctx->ctx.list->set.subscription_fname) == 0) {
/* if this is the subscriptions file, skip it */
root_dir = mailbox_list_get_root_forced(ctx->ctx.list,
MAILBOX_LIST_PATH_TYPE_DIR);
diff -r 7057dfeaeb1a -r 4b9a43201a71 src/lib-storage/list/mailbox-list-fs.c
--- a/src/lib-storage/list/mailbox-list-fs.c Wed Jun 12 21:16:06 2013 +0300
+++ b/src/lib-storage/list/mailbox-list-fs.c Wed Jun 12 21:25:09 2013 +0300
@@ -170,6 +170,12 @@
enum mailbox_list_path_type type;
const char *path;
+ if (_list->set.subscription_fname == NULL) {
+ mailbox_list_set_error(_list, MAIL_ERROR_NOTPOSSIBLE,
+ "Subscriptions not supported");
+ return -1;
+ }
+
type = _list->set.control_dir != NULL ?
MAILBOX_LIST_PATH_TYPE_CONTROL : MAILBOX_LIST_PATH_TYPE_DIR;
diff -r 7057dfeaeb1a -r 4b9a43201a71 src/lib-storage/list/mailbox-list-index-backend.c
--- a/src/lib-storage/list/mailbox-list-index-backend.c Wed Jun 12 21:16:06 2013 +0300
+++ b/src/lib-storage/list/mailbox-list-index-backend.c Wed Jun 12 21:25:09 2013 +0300
@@ -167,6 +167,12 @@
struct index_mailbox_list *list = (struct index_mailbox_list *)_list;
const char *path;
+ if (_list->set.subscription_fname == NULL) {
+ mailbox_list_set_error(_list, MAIL_ERROR_NOTPOSSIBLE,
+ "Subscriptions not supported");
+ return -1;
+ }
+
path = t_strconcat(_list->set.control_dir != NULL ?
_list->set.control_dir : _list->set.root_dir,
"/", _list->set.subscription_fname, NULL);
diff -r 7057dfeaeb1a -r 4b9a43201a71 src/lib-storage/list/mailbox-list-maildir.c
--- a/src/lib-storage/list/mailbox-list-maildir.c Wed Jun 12 21:16:06 2013 +0300
+++ b/src/lib-storage/list/mailbox-list-maildir.c Wed Jun 12 21:25:09 2013 +0300
@@ -180,6 +180,12 @@
(struct maildir_mailbox_list *)_list;
const char *path;
+ if (_list->set.subscription_fname == NULL) {
+ mailbox_list_set_error(_list, MAIL_ERROR_NOTPOSSIBLE,
+ "Subscriptions not supported");
+ return -1;
+ }
+
path = t_strconcat(_list->set.control_dir != NULL ?
_list->set.control_dir : _list->set.root_dir,
"/", _list->set.subscription_fname, NULL);
diff -r 7057dfeaeb1a -r 4b9a43201a71 src/lib-storage/list/mailbox-list-subscriptions.c
--- a/src/lib-storage/list/mailbox-list-subscriptions.c Wed Jun 12 21:16:06 2013 +0300
+++ b/src/lib-storage/list/mailbox-list-subscriptions.c Wed Jun 12 21:25:09 2013 +0300
@@ -126,7 +126,8 @@
type = src_list->set.control_dir != NULL ?
MAILBOX_LIST_PATH_TYPE_CONTROL : MAILBOX_LIST_PATH_TYPE_DIR;
- if (!mailbox_list_get_root_path(src_list, type, &path)) {
+ if (!mailbox_list_get_root_path(src_list, type, &path) ||
+ src_list->set.subscription_fname == NULL) {
/* no subscriptions (e.g. pop3c) */
return 0;
}
More information about the dovecot-cvs
mailing list