]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Fix memory leak in SPNEGO gss_init_sec_context()
authorGreg Hudson <ghudson@mit.edu>
Wed, 25 Nov 2015 19:43:35 +0000 (14:43 -0500)
committerTom Yu <tlyu@mit.edu>
Fri, 15 Jan 2016 22:05:35 +0000 (17:05 -0500)
After the initial call to spnego_gss_init_sec_context(), the context
handle can leak if init_ctx_cont() returns an error, because the
cleanup handler assumes that spnego_ctx contains the value of
*context_handle.  Fix this leak by setting spnego_ctx before the if
block which contains that call.  Reported by Adam Bernstein.

(cherry picked from commit 159dbbd5ff14fdc2fa71fb3a8804eb401c914399)

ticket: 8281
version_fixed: 1.13.4
tags: -pullup
status: resolved

src/lib/gssapi/spnego/spnego_mech.c

index ec38eea1e61d968b57aafa60e67adf66118f7a2a..ce157c5ba7404e52aa19ac01de44628f843fa040 100644 (file)
@@ -1024,7 +1024,8 @@ spnego_gss_init_sec_context(
 
        /* Step 1: perform mechanism negotiation. */
        spcred = (spnego_gss_cred_id_t)claimant_cred_handle;
-       if (*context_handle == GSS_C_NO_CONTEXT) {
+       spnego_ctx = (spnego_gss_ctx_id_t)*context_handle;
+       if (spnego_ctx == NULL) {
                ret = init_ctx_new(minor_status, spcred,
                                   context_handle, &send_token);
                if (ret != GSS_S_CONTINUE_NEEDED) {