diff options
Diffstat (limited to 'lib/gssapi/krb5/set_cred_option.c')
| -rw-r--r-- | lib/gssapi/krb5/set_cred_option.c | 41 | 
1 files changed, 30 insertions, 11 deletions
| diff --git a/lib/gssapi/krb5/set_cred_option.c b/lib/gssapi/krb5/set_cred_option.c index d0ca1c4d95dd..bd3871675109 100644 --- a/lib/gssapi/krb5/set_cred_option.c +++ b/lib/gssapi/krb5/set_cred_option.c @@ -30,14 +30,7 @@   * SUCH DAMAGE.   */ -#include "krb5/gsskrb5_locl.h" - -RCSID("$Id: set_cred_option.c 20325 2007-04-12 16:49:17Z lha $"); - -static gss_OID_desc gss_krb5_import_cred_x_oid_desc = -{9, (void *)"\x2b\x06\x01\x04\x01\xa9\x4a\x13\x04"}; /* XXX */ - -gss_OID GSS_KRB5_IMPORT_CRED_X = &gss_krb5_import_cred_x_oid_desc; +#include "gsskrb5_locl.h"  static OM_uint32  import_cred(OM_uint32 *minor_status, @@ -112,8 +105,8 @@ import_cred(OM_uint32 *minor_status,      free(str);      str = NULL; -    major_stat = _gsskrb5_import_cred(minor_status, id, keytab_principal, -				      keytab, cred_handle); +    major_stat = _gsskrb5_krb5_import_cred(minor_status, id, keytab_principal, +					   keytab, cred_handle);  out:      if (id)  	krb5_cc_close(context, id); @@ -201,8 +194,29 @@ out:      return major_stat;  } +static OM_uint32 +no_ci_flags(OM_uint32 *minor_status, +	    krb5_context context, +	    gss_cred_id_t *cred_handle, +	    const gss_buffer_t value) +{ +    gsskrb5_cred cred; + +    if (cred_handle == NULL || *cred_handle == GSS_C_NO_CREDENTIAL) { +	*minor_status = 0; +	return GSS_S_FAILURE; +    } + +    cred = (gsskrb5_cred)*cred_handle; +    cred->cred_flags |= GSS_CF_NO_CI_FLAGS; + +    *minor_status = 0; +    return GSS_S_COMPLETE; + +} + -OM_uint32 +OM_uint32 GSSAPI_CALLCONV  _gsskrb5_set_cred_option             (OM_uint32 *minor_status,              gss_cred_id_t *cred_handle, @@ -224,6 +238,11 @@ _gsskrb5_set_cred_option      if (gss_oid_equal(desired_object, GSS_KRB5_SET_ALLOWABLE_ENCTYPES_X))  	return allowed_enctypes(minor_status, context, cred_handle, value); +    if (gss_oid_equal(desired_object, GSS_KRB5_CRED_NO_CI_FLAGS_X)) { +	return no_ci_flags(minor_status, context, cred_handle, value); +    } + +      *minor_status = EINVAL;      return GSS_S_FAILURE;  } | 
