From: Stephan Bosch Date: Sun, 21 Jan 2024 16:48:07 +0000 (+0100) Subject: lmtp: lmtp-client - Fix potential segfault occurring at service termination X-Git-Tag: 2.4.0~1822 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b579a89a67cab367bba6a7952a9f8d6afe5cd331;p=thirdparty%2Fdovecot%2Fcore.git lmtp: lmtp-client - Fix potential segfault occurring at service termination Invalid write of size 8 found by Valgrind. Broken by 9a1a1cc222d7b67abf3ff621b70ed92b1b6d8d39. --- diff --git a/src/lmtp/lmtp-client.c b/src/lmtp/lmtp-client.c index 3ac84737b3..a7669d20c2 100644 --- a/src/lmtp/lmtp-client.c +++ b/src/lmtp/lmtp-client.c @@ -270,12 +270,14 @@ void client_destroy(struct client **_client, const char *enh_code, *_client = NULL; + client_ref(client); smtp_server_connection_terminate(&conn, (enh_code == NULL ? "4.0.0" : enh_code), reason); /* smtp_server_connection_terminate() calls client_connection_state_changed(), which may still access client->conn. Don't clear it before that. */ client->conn = NULL; + client_unref(&client); } static void