X-Git-Url: http://www.project-moonshot.org/gitweb/?p=mod_auth_gssapi.git;a=blobdiff_plain;f=src%2Fmod_auth_gssapi.c;h=66c86595b6cdbca3bb4d8253d51149d2917ebcff;hp=053d02fb9bfd6ef01dd2bff0ce504d5b7d5bb46b;hb=5cd4e8a90f3db84e57a25570ffdfeaffcf908b6c;hpb=5c3cc59740925e6ba1c3447237964d07d7f96aa1 diff --git a/src/mod_auth_gssapi.c b/src/mod_auth_gssapi.c index 053d02f..66c8659 100644 --- a/src/mod_auth_gssapi.c +++ b/src/mod_auth_gssapi.c @@ -424,13 +424,15 @@ static int mag_auth(request_rec *req) if (mc) { /* register the context in the memory pool, so it can be freed * when the connection/request is terminated */ - apr_pool_userdata_set(mc, "mag_conn_ptr", - mag_conn_destroy, mc->parent); + apr_pool_cleanup_register(mc->parent, (void *) mc, + mag_conn_destroy, apr_pool_cleanup_null); if (mc->established && !auth_header) { ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, req, "Already established context found!"); mag_set_req_data(req, cfg, mc); + ret = OK; + goto done; } pctx = &mc->ctx; } else { @@ -657,7 +659,6 @@ static int mag_auth(request_rec *req) "Mechanism needs continuation but neither " "GssapiConnectionBound nor " "GssapiUseSessions are available"); - gss_delete_sec_context(&min, pctx, GSS_C_NO_BUFFER); gss_release_buffer(&min, &output); output.length = 0; } @@ -766,7 +767,9 @@ done: } } #endif - gss_delete_sec_context(&min, &user_ctx, &output); + if (ctx != GSS_C_NO_CONTEXT) + gss_delete_sec_context(&min, &ctx, GSS_C_NO_BUFFER); + gss_delete_sec_context(&min, &user_ctx, GSS_C_NO_BUFFER); gss_release_cred(&min, &user_cred); gss_release_cred(&min, &acquired_cred); gss_release_cred(&min, &delegated_cred);