pull up r20082 from trunk
authorTom Yu <tlyu@mit.edu>
Wed, 3 Oct 2007 00:26:01 +0000 (00:26 +0000)
committerTom Yu <tlyu@mit.edu>
Wed, 3 Oct 2007 00:26:01 +0000 (00:26 +0000)
 r20082@cathode-dark-space:  tlyu | 2007-10-02 20:17:27 -0400
 ticket: 5802
 target_version: 1.6.3
 tags: pullup

 Apply patch from Nalin Dahyabhai to correctly handle delegated
 credentials if ret_flags is null.

ticket: 5802
version_fixed: 1.6.3

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-6@20083 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/gssapi/mechglue/g_accept_sec_context.c

index 0e8506a49de3aef8f1bf05a93d2f0bd5f0cdeb16..c18440fb9e55a1a07b8a3e49d2ef48f8bb705b69 100644 (file)
@@ -112,6 +112,7 @@ gss_cred_id_t *             d_cred;
 
 {
     OM_uint32          status, temp_status, temp_minor_status;
+    OM_uint32          temp_ret_flags = 0;
     gss_union_ctx_id_t union_ctx_id;
     gss_union_cred_t   union_cred;
     gss_cred_id_t      input_cred_handle = GSS_C_NO_CREDENTIAL;
@@ -202,7 +203,7 @@ gss_cred_id_t *             d_cred;
                                                  &internal_name,
                                                  mech_type,
                                                  output_token,
-                                                 ret_flags,
+                                                 &temp_ret_flags,
                                                  time_rec,
                                        d_cred ? &tmp_d_cred : NULL);
 
@@ -245,7 +246,7 @@ gss_cred_id_t *             d_cred;
            }
 
            /* Ensure we're returning correct creds format */
-           if ((ret_flags && GSS_C_DELEG_FLAG) &&
+           if ((temp_ret_flags & GSS_C_DELEG_FLAG) &&
                tmp_d_cred != GSS_C_NO_CREDENTIAL) {
                gss_union_cred_t d_u_cred = NULL;
 
@@ -329,6 +330,8 @@ gss_cred_id_t *             d_cred;
            if (src_name == NULL && tmp_src_name != NULL)
                (void) gss_release_name(&temp_minor_status,
                                        &tmp_src_name);
+           if (ret_flags != NULL)
+               *ret_flags = temp_ret_flags;
            return      (status);
     } else {