From: Timo Sirainen Date: Tue, 20 Jun 2023 12:03:46 +0000 (+0300) Subject: lib-dict: Fix corrupted error message when istream read fails X-Git-Tag: 2.4.0~2628 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ce7b10e671428fd4350d32f2851874f424f477cd;p=thirdparty%2Fdovecot%2Fcore.git lib-dict: Fix corrupted error message when istream read fails i_stream_get_error() return value may point to memory allocated from istream. redis_disconnected() calls connection_disconnect(), which frees this memory. The error is still used, but now it's corrupted. --- diff --git a/src/lib-dict/dict-redis.c b/src/lib-dict/dict-redis.c index b14376eb2b..06d448e130 100644 --- a/src/lib-dict/dict-redis.c +++ b/src/lib-dict/dict-redis.c @@ -95,7 +95,10 @@ static void redis_disconnected(struct redis_connection *conn, const char *reason) { const struct dict_commit_result result = { - DICT_COMMIT_RET_FAILED, reason + DICT_COMMIT_RET_FAILED, + /* t_strdup() in case reason points to istream, which gets + freed by connection_disconnect() */ + t_strdup(reason) }; const struct redis_dict_reply *reply;