You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Vlad Georgescu <vg...@gmail.com> on 2006/08/19 11:30:11 UTC
[PATCH] Don't leak SASL contexts
[[[
Make sure sasl contexts are always destroyed.
* subversion/libsvn_ra_svn/sasl_auth.c
(sasl_dispose_cb): New pool cleanup function.
(new_sasl_ctx): Install the cleanup.
(svn_ra_svn__do_auth): Don't call sasl_dispose.
]]]
===================================================================
--- subversion/libsvn_ra_svn/sasl_auth.c (revision 21115)
+++ subversion/libsvn_ra_svn/sasl_auth.c (working copy)
@@ -162,6 +162,13 @@
return SVN_NO_ERROR;
}
+static apr_status_t sasl_dispose_cb(void *data)
+{
+ sasl_conn_t *sasl_ctx = (sasl_conn_t*) data;
+ sasl_dispose(&sasl_ctx);
+ return APR_SUCCESS;
+}
+
/* Create a new SASL context. */
static svn_error_t *new_sasl_ctx(sasl_conn_t **sasl_ctx,
svn_boolean_t is_tunneled,
@@ -180,6 +187,8 @@
return svn_error_create(SVN_ERR_RA_NOT_AUTHORIZED, NULL,
sasl_errstring(result, NULL, NULL));
+ apr_pool_cleanup_register(pool, *sasl_ctx, sasl_dispose_cb,
+ apr_pool_cleanup_null);
if (is_tunneled)
{
@@ -483,9 +492,6 @@
compat,
subpool));
- /* Dispose of this SASL context before creating a new one. */
- sasl_dispose(&sasl_ctx);
-
if (!success && need_creds)
SVN_ERR(svn_auth_next_credentials((void**) &creds, iterstate, pool));
}
--
Vlad
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [PATCH] Don't leak SASL contexts
Posted by Garrett Rooney <ro...@electricjellyfish.net>.
On 8/19/06, Vlad Georgescu <vg...@gmail.com> wrote:
> [[[
> Make sure sasl contexts are always destroyed.
>
> * subversion/libsvn_ra_svn/sasl_auth.c
> (sasl_dispose_cb): New pool cleanup function.
> (new_sasl_ctx): Install the cleanup.
> (svn_ra_svn__do_auth): Don't call sasl_dispose.
> ]]]
>
> ===================================================================
> --- subversion/libsvn_ra_svn/sasl_auth.c (revision 21115)
> +++ subversion/libsvn_ra_svn/sasl_auth.c (working copy)
> @@ -162,6 +162,13 @@
> return SVN_NO_ERROR;
> }
>
> +static apr_status_t sasl_dispose_cb(void *data)
> +{
> + sasl_conn_t *sasl_ctx = (sasl_conn_t*) data;
> + sasl_dispose(&sasl_ctx);
> + return APR_SUCCESS;
> +}
That cast was unnecessary (and if it was necessary we'd put a space
between the sasl_cont_t and the *), so I dropped it, but other than
that it looks fine, so I just committed the tweaked version in r21140.
Thanks!
-garrett
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org