From: Marco Bettini Date: Tue, 16 May 2023 09:40:55 +0000 (+0000) Subject: lib-dict: redis_reply_callback() - Don't crash if there is no callback X-Git-Tag: 2.4.0~2763 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3ab6a6cbab83b08a24f6fab05f709e98722ace98;p=thirdparty%2Fdovecot%2Fcore.git lib-dict: redis_reply_callback() - Don't crash if there is no callback --- diff --git a/src/lib-dict/dict-redis.c b/src/lib-dict/dict-redis.c index de6b06dabf..b14376eb2b 100644 --- a/src/lib-dict/dict-redis.c +++ b/src/lib-dict/dict-redis.c @@ -83,6 +83,7 @@ static void redis_reply_callback(struct redis_connection *conn, const struct redis_dict_reply *reply, const struct dict_commit_result *result) { + i_assert(reply->callback != NULL); if (conn->dict->dict.prev_ioloop != NULL) io_loop_set_current(conn->dict->dict.prev_ioloop); reply->callback(result, reply->context); @@ -679,7 +680,6 @@ static void redis_transaction_rollback(struct dict_transaction_context *_ctx) struct redis_dict_transaction_context *ctx = (struct redis_dict_transaction_context *)_ctx; struct redis_dict *dict = (struct redis_dict *)_ctx->dict; - struct redis_dict_reply *reply; i_assert(dict->transaction_open); dict->transaction_open = FALSE; @@ -690,8 +690,6 @@ static void redis_transaction_rollback(struct dict_transaction_context *_ctx) } else if (_ctx->changed) { o_stream_nsend_str(dict->conn.conn.output, "*1\r\n$7\r\nDISCARD\r\n"); - reply = array_append_space(&dict->replies); - reply->reply_count = 1; redis_input_state_add(dict, REDIS_INPUT_STATE_DISCARD); } i_free(ctx->error);