]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dict-client: Verify that the correct transaction ID is returned for commit reply.
authorTimo Sirainen <tss@iki.fi>
Thu, 24 Sep 2015 15:42:58 +0000 (18:42 +0300)
committerTimo Sirainen <tss@iki.fi>
Thu, 24 Sep 2015 15:42:58 +0000 (18:42 +0300)
src/lib-dict/dict-client.c

index ec9d1fb7b0fae9a50f58d7c9212d8299c7386a84..d0c23ca3f654b6411bd5bfe33fd25a31bde5c474 100644 (file)
@@ -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;