dovecot-2.2: lib-auth: Don't crash in auth_master_user_list_*() ...
dovecot at dovecot.org
dovecot at dovecot.org
Tue Jul 30 13:09:57 EEST 2013
details: http://hg.dovecot.org/dovecot-2.2/rev/0cab916b28c6
changeset: 16623:0cab916b28c6
user: Timo Sirainen <tss at iki.fi>
date: Tue Jul 30 13:09:52 2013 +0300
description:
lib-auth: Don't crash in auth_master_user_list_*() if socket can't be connected to.
diffstat:
src/lib-auth/auth-master.c | 19 ++++++++++++-------
1 files changed, 12 insertions(+), 7 deletions(-)
diffs (43 lines):
diff -r a6736e42301e -r 0cab916b28c6 src/lib-auth/auth-master.c
--- a/src/lib-auth/auth-master.c Mon Jul 29 23:22:46 2013 +0300
+++ b/src/lib-auth/auth-master.c Tue Jul 30 13:09:52 2013 +0300
@@ -352,13 +352,15 @@
io_loop_set_current(conn->prev_ioloop);
lib_signals_reset_ioloop();
}
- io_loop_set_current(conn->ioloop);
+ if (conn->ioloop != NULL) {
+ io_loop_set_current(conn->ioloop);
- timeout_remove(&conn->to);
- io_remove(&conn->io);
- i_stream_unref(&conn->input);
- o_stream_unref(&conn->output);
- io_loop_destroy(&conn->ioloop);
+ timeout_remove(&conn->to);
+ io_remove(&conn->io);
+ i_stream_unref(&conn->input);
+ o_stream_unref(&conn->output);
+ io_loop_destroy(&conn->ioloop);
+ }
if ((conn->flags & AUTH_MASTER_FLAG_NO_IDLE_TIMEOUT) == 0) {
if (conn->prev_ioloop == NULL)
@@ -685,13 +687,16 @@
{
const char *line;
+ if (ctx->failed)
+ return NULL;
+
/* try to read already buffered input */
line = i_stream_next_line(ctx->conn->input);
if (line != NULL) {
T_BEGIN {
auth_handle_line(ctx->conn, line);
} T_END;
- } else if (!ctx->failed) {
+ } else {
/* wait for more data */
io_loop_run(ctx->conn->ioloop);
}
More information about the dovecot-cvs
mailing list