From: Aki Tuomi Date: Thu, 7 Apr 2022 06:39:42 +0000 (+0300) Subject: login-common: Fix crash with invalid login_trusted_networks setting X-Git-Tag: 2.4.0~4144 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b13f915dd3656d4611d8a419ef5734cf71ceba7b;p=thirdparty%2Fdovecot%2Fcore.git login-common: Fix crash with invalid login_trusted_networks setting client_is_trusted() uses the event to log an error. Broken in 95c63f3e9efdb7ba916dac3e6b013d131392c48a --- diff --git a/src/login-common/client-common.c b/src/login-common/client-common.c index 3f3fae6e04..951a8bea0a 100644 --- a/src/login-common/client-common.c +++ b/src/login-common/client-common.c @@ -204,6 +204,16 @@ client_alloc(int fd, pool_t pool, client->real_remote_ip = conn->real_remote_ip; client->real_remote_port = conn->real_remote_port; client->listener_name = p_strdup(client->pool, conn->name); + /* This event must exist before client_is_trusted() is called */ + client->event = event_create(NULL); + event_add_category(client->event, &login_binary->event_category); + event_add_str(client->event, "local_ip", net_ip2addr(&conn->local_ip)); + event_add_int(client->event, "local_port", conn->local_port); + event_add_str(client->event, "remote_ip", net_ip2addr(&conn->remote_ip)); + event_add_int(client->event, "remote_port", conn->remote_port); + event_add_str(client->event, "service", login_binary->protocol); + event_set_log_message_callback(client->event, client_log_msg_callback, + client); client->trusted = client_is_trusted(client); if (conn->proxied) { @@ -218,15 +228,6 @@ client_alloc(int fd, pool_t pool, } client->proxy_ttl = LOGIN_PROXY_TTL; - client->event = event_create(NULL); - event_add_category(client->event, &login_binary->event_category); - event_add_str(client->event, "local_ip", net_ip2addr(&conn->local_ip)); - event_add_int(client->event, "local_port", conn->local_port); - event_add_str(client->event, "remote_ip", net_ip2addr(&conn->remote_ip)); - event_add_int(client->event, "remote_port", conn->remote_port); - event_add_str(client->event, "service", login_binary->protocol); - event_set_log_message_callback(client->event, client_log_msg_callback, - client); client_open_streams(client); return client;