From: Timo Sirainen Date: Thu, 24 Sep 2015 15:42:58 +0000 (+0300) Subject: dict-client: Verify that the correct transaction ID is returned for commit reply. X-Git-Tag: 2.2.19.rc2~38 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=38f51958dc9dc5954c4212c9b370fd42d47197ec;p=thirdparty%2Fdovecot%2Fcore.git dict-client: Verify that the correct transaction ID is returned for commit reply. --- diff --git a/src/lib-dict/dict-client.c b/src/lib-dict/dict-client.c index ec9d1fb7b0..d0c23ca3f6 100644 --- a/src/lib-dict/dict-client.c +++ b/src/lib-dict/dict-client.c @@ -758,6 +758,7 @@ client_dict_transaction_commit(struct dict_transaction_context *_ctx, struct client_dict_transaction_context *ctx = (struct client_dict_transaction_context *)_ctx; struct client_dict *dict = (struct client_dict *)_ctx->dict; + unsigned int id; int ret = ctx->failed ? -1 : 1; ctx->committed = TRUE; @@ -799,6 +800,12 @@ client_dict_transaction_commit(struct dict_transaction_context *_ctx, ret = -1; break; } + if (str_to_uint(line+1, &id) < 0 || ctx->id != id) { + i_error("dict-client: Invalid commit reply, " + "expected id=%u: %s", ctx->id, line); + client_dict_disconnect(dict); + ret = -1; + } } } T_END;