From: Timo Sirainen Date: Fri, 15 May 2009 19:08:37 +0000 (-0400) Subject: userdb passwd-file: Fixes to user listing. X-Git-Tag: 2.0.alpha1~765 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4f32fba9435caf2eaf89af7cf24b9c4029dc6e82;p=thirdparty%2Fdovecot%2Fcore.git userdb passwd-file: Fixes to user listing. --HG-- branch : HEAD --- diff --git a/src/auth/userdb-passwd-file.c b/src/auth/userdb-passwd-file.c index db60ccc578..d5f18ccaae 100644 --- a/src/auth/userdb-passwd-file.c +++ b/src/auth/userdb-passwd-file.c @@ -88,7 +88,7 @@ passwd_file_iterate_init(struct auth_userdb *userdb, userdb_iter_callback_t *callback, void *context) { struct passwd_file_userdb_module *module = - (struct passwd_file_userdb_module *)userdb; + (struct passwd_file_userdb_module *)userdb->userdb; struct passwd_file_userdb_iterate_context *ctx; int fd; @@ -96,6 +96,12 @@ passwd_file_iterate_init(struct auth_userdb *userdb, ctx->ctx.userdb = userdb->userdb; ctx->ctx.callback = callback; ctx->ctx.context = context; + if (module->pwf->default_file == NULL) { + i_error("passwd-file: User iteration isn't currently supported " + "with %%variable paths"); + ctx->ctx.failed = TRUE; + return &ctx->ctx; + } ctx->path = i_strdup(module->pwf->default_file->path); /* for now we support only a single passwd-file */ @@ -137,7 +143,8 @@ static int passwd_file_iterate_deinit(struct userdb_iterate_context *_ctx) (struct passwd_file_userdb_iterate_context *)_ctx; int ret = _ctx->failed ? -1 : 0; - i_stream_destroy(&ctx->input); + if (ctx->input != NULL) + i_stream_destroy(&ctx->input); i_free(ctx->path); i_free(ctx); return ret;