]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth-policy: Use dedicated pool
authorAki Tuomi <aki.tuomi@open-xchange.com>
Mon, 18 Feb 2019 11:26:18 +0000 (13:26 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Thu, 21 Feb 2019 07:43:55 +0000 (07:43 +0000)
Otherwise memory gets released too early.

src/auth/auth-policy.c

index be50c1f1cfe9a4e6b06117efdfeeadfd8ece4e7d..067f58a43536fcd4831171393dc8eb77d15875e7 100755 (executable)
@@ -245,6 +245,7 @@ void auth_policy_finish(struct policy_lookup_ctx *context)
        http_client_request_abort(&context->http_request);
        if (context->request != NULL)
                auth_request_unref(&context->request);
+       pool_unref(&context->pool);
 }
 
 static
@@ -532,8 +533,9 @@ void auth_policy_check(struct auth_request *request, const char *password,
                cb(0, context);
                return;
        }
-       struct policy_lookup_ctx *ctx = p_new(request->pool, struct policy_lookup_ctx, 1);
-       ctx->pool = request->pool;
+       pool_t pool = pool_alloconly_create("auth policy", 512);
+       struct policy_lookup_ctx *ctx = p_new(pool, struct policy_lookup_ctx, 1);
+       ctx->pool = pool;
        ctx->request = request;
        ctx->expect_result = TRUE;
        ctx->callback = cb;
@@ -556,8 +558,9 @@ void auth_policy_report(struct auth_request *request)
 
        if (*(request->set->policy_server_url) == '\0')
                return;
-       struct policy_lookup_ctx *ctx = p_new(request->pool, struct policy_lookup_ctx, 1);
-       ctx->pool = request->pool;
+       pool_t pool = pool_alloconly_create("auth policy", 512);
+       struct policy_lookup_ctx *ctx = p_new(pool, struct policy_lookup_ctx, 1);
+       ctx->pool = pool;
        ctx->request = request;
        ctx->expect_result = FALSE;
        ctx->set = request->set;