diff options
author | Richard Lowe <richlowe@richlowe.net> | 2011-05-16 02:18:09 +0100 |
---|---|---|
committer | John Sonnenschein <johns@joyent.com> | 2012-03-13 05:59:34 +0000 |
commit | 333ba2f854ec0fbdc6d44025f6bfcf9f3093e40b (patch) | |
tree | 4e1c8c0a3be6c49710b6fc5512e6a32fc7d83913 /usr/src | |
parent | 80a58fd582922a283c06c28eecb9e362ab67ba80 (diff) | |
download | illumos-joyent-333ba2f854ec0fbdc6d44025f6bfcf9f3093e40b.tar.gz |
2179 gss should be more careful with pointer casts
Reviewed by: Albert Lee <trisk@nexenta.com>
Reviewed by: Joshua M. Clulow <josh@sysmgr.org>
Reviewed by: Jason King <jason.brian.king@gmail.com>
Reviewed by: Milan Jurik <milan.jurik@xylab.cz>
Approved by: Gordon Ross <gwr@nexenta.com>
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/cmd/gss/gssd/gssd_clnt_stubs.c | 78 | ||||
-rw-r--r-- | usr/src/uts/common/gssapi/gssd_clnt_stubs.c | 91 | ||||
-rw-r--r-- | usr/src/uts/common/gssapi/include/mechglueP.h | 3 |
3 files changed, 77 insertions, 95 deletions
diff --git a/usr/src/cmd/gss/gssd/gssd_clnt_stubs.c b/usr/src/cmd/gss/gssd/gssd_clnt_stubs.c index 609e51a5e8..86b77fd9ff 100644 --- a/usr/src/cmd/gss/gssd/gssd_clnt_stubs.c +++ b/usr/src/cmd/gss/gssd/gssd_clnt_stubs.c @@ -326,8 +326,7 @@ kgss_add_cred_wrapped(minor_status, arg.uid = (OM_uint32) uid; arg.input_cred_handle.GSS_CRED_ID_T_len = - input_cred_handle == - (gssd_cred_id_t)GSS_C_NO_CREDENTIAL ? + input_cred_handle == GSSD_NO_CREDENTIAL ? 0 : (uint_t)sizeof (gssd_cred_id_t); arg.input_cred_handle.GSS_CRED_ID_T_val = (char *)&input_cred_handle; @@ -454,7 +453,7 @@ kgss_add_cred(minor_status, gssd_cred_verifier = KCRED_TO_CREDV(input_cred_handle); gssd_input_cred_handle = KCRED_TO_CRED(input_cred_handle); } else - gssd_input_cred_handle = (gssd_cred_id_t)GSS_C_NO_CREDENTIAL; + gssd_input_cred_handle = GSSD_NO_CREDENTIAL; err = kgss_add_cred_wrapped(minor_status, gssd_input_cred_handle, gssd_cred_verifier, desired_name, desired_mech_type, @@ -620,7 +619,7 @@ kgss_init_sec_context_wrapped(minor_status, arg.gssd_context_verifier = *gssd_context_verifier; arg.claimant_cred_handle.GSS_CRED_ID_T_len = - claimant_cred_handle == (gssd_cred_id_t)GSS_C_NO_CREDENTIAL ? + claimant_cred_handle == GSSD_NO_CREDENTIAL ? 0 : (uint_t)sizeof (gssd_cred_id_t); arg.claimant_cred_handle.GSS_CRED_ID_T_val = (char *)&claimant_cred_handle; @@ -803,20 +802,20 @@ kgss_init_sec_context( if (claimant_cred_handle != GSS_C_NO_CREDENTIAL) { gssd_cred_verifier = - KCRED_TO_CREDV(claimant_cred_handle); + KCRED_TO_CREDV(claimant_cred_handle); gssd_cl_cred_handle = - KCRED_TO_CRED(claimant_cred_handle); - } else - gssd_cl_cred_handle = - (gssd_cred_id_t)GSS_C_NO_CREDENTIAL; + KCRED_TO_CRED(claimant_cred_handle); + } else { + gssd_cl_cred_handle = GSSD_NO_CREDENTIAL; + } err = kgss_init_sec_context_wrapped(minor_status, - gssd_cl_cred_handle, - gssd_cred_verifier, &kctx->gssd_ctx, - &kctx->gssd_ctx_verifier, - target_name, mech_type, req_flags, time_req, - input_chan_bindings, input_token, actual_mech_type, - output_token, ret_flags, time_rec, uid); + gssd_cl_cred_handle, + gssd_cred_verifier, &kctx->gssd_ctx, + &kctx->gssd_ctx_verifier, + target_name, mech_type, req_flags, time_req, + input_chan_bindings, input_token, actual_mech_type, + output_token, ret_flags, time_rec, uid); if (GSS_ERROR(err)) { KGSS_FREE(kctx); @@ -868,7 +867,7 @@ kgss_accept_sec_context_wrapped(minor_status, arg.uid = (OM_uint32) uid; arg.context_handle.GSS_CTX_ID_T_len = - *context_handle == (gssd_ctx_id_t)GSS_C_NO_CONTEXT ? + *context_handle == GSSD_NO_CONTEXT ? 0 : (uint_t)sizeof (gssd_ctx_id_t); arg.context_handle.GSS_CTX_ID_T_val = (char *)context_handle; arg.gssd_context_verifier = @@ -876,8 +875,7 @@ kgss_accept_sec_context_wrapped(minor_status, 0 : *gssd_context_verifier; arg.verifier_cred_handle.GSS_CRED_ID_T_len = - verifier_cred_handle == - (gssd_cred_id_t)GSS_C_NO_CREDENTIAL ? + verifier_cred_handle == GSSD_NO_CREDENTIAL ? 0 : (uint_t)sizeof (gssd_cred_id_t); arg.verifier_cred_handle.GSS_CRED_ID_T_val = (char *)&verifier_cred_handle; @@ -1054,24 +1052,24 @@ kgss_accept_sec_context( if (*context_handle == GSS_C_NO_CONTEXT) { kctx = KGSS_ALLOC(); *context_handle = (gss_ctx_id_t)kctx; - kctx->gssd_ctx = (gssd_ctx_id_t)GSS_C_NO_CONTEXT; + kctx->gssd_ctx = GSSD_NO_CONTEXT; } else kctx = (struct kgss_ctx *)*context_handle; if (verifier_cred_handle != GSS_C_NO_CREDENTIAL) { gssd_cred_verifier = - KCRED_TO_CREDV(verifier_cred_handle); + KCRED_TO_CREDV(verifier_cred_handle); gssd_ver_cred_handle = - KCRED_TO_CRED(verifier_cred_handle); + KCRED_TO_CRED(verifier_cred_handle); } else - gssd_ver_cred_handle = (gssd_cred_id_t)GSS_C_NO_CREDENTIAL; + gssd_ver_cred_handle = GSSD_NO_CREDENTIAL; err = kgss_accept_sec_context_wrapped(minor_status, - &kctx->gssd_ctx, - &kctx->gssd_ctx_verifier, gssd_ver_cred_handle, - gssd_cred_verifier, input_token, input_chan_bindings, - src_name, mech_type, output_token, ret_flags, - time_rec, delegated_cred_handle, uid); + &kctx->gssd_ctx, + &kctx->gssd_ctx_verifier, gssd_ver_cred_handle, + gssd_cred_verifier, input_token, input_chan_bindings, + src_name, mech_type, output_token, ret_flags, + time_rec, delegated_cred_handle, uid); if (GSS_ERROR(err)) { KGSS_FREE(kctx); @@ -1234,10 +1232,10 @@ kgss_delete_sec_context( kctx = KCTX_TO_KGSS_CTX(*context_handle); err = kgss_delete_sec_context_wrapped(minor_status, - &kctx->gssd_ctx, kctx->gssd_ctx_verifier, - output_token); + &kctx->gssd_ctx, kctx->gssd_ctx_verifier, + output_token); - if (kctx->gssd_ctx != (gssd_ctx_id_t)GSS_C_NO_CONTEXT) + if (kctx->gssd_ctx != GSSD_NO_CONTEXT) err = GSS_S_FAILURE; else err = GSS_S_COMPLETE; @@ -1348,8 +1346,8 @@ kgss_sign( return (GSS_S_FAILURE); return (KGSS_SIGN(minor_status, - context_handle, qop_req, message_buffer, - msg_token)); + context_handle, qop_req, message_buffer, + msg_token)); } OM_uint32 @@ -1432,8 +1430,7 @@ kgss_verify(OM_uint32 *minor_status, return (GSS_S_FAILURE); return (KGSS_VERIFY(minor_status, context_handle, - message_buffer, - token_buffer, qop_state)); + message_buffer, token_buffer, qop_state)); } @@ -1657,9 +1654,8 @@ kgss_unseal(OM_uint32 *minor_status, return (GSS_S_FAILURE); return (KGSS_UNSEAL(minor_status, context_handle, - input_message_buffer, - output_message_buffer, - conf_state, qop_state)); + input_message_buffer, output_message_buffer, + conf_state, qop_state)); } /* EXPORT DELETE END */ @@ -1856,7 +1852,7 @@ kgss_inquire_cred_wrapped(minor_status, arg.uid = (OM_uint32) uid; arg.cred_handle.GSS_CRED_ID_T_len = - cred_handle == (gssd_cred_id_t)GSS_C_NO_CREDENTIAL ? + cred_handle == GSSD_NO_CREDENTIAL ? 0 : (uint_t)sizeof (gssd_cred_id_t); arg.cred_handle.GSS_CRED_ID_T_val = (char *)&cred_handle; arg.gssd_cred_verifier = gssd_cred_verifier; @@ -2019,7 +2015,7 @@ kgss_inquire_cred_by_mech_wrapped(minor_status, arg.uid = (OM_uint32) uid; arg.cred_handle.GSS_CRED_ID_T_len = - cred_handle == (gssd_cred_id_t)GSS_C_NO_CREDENTIAL ? + cred_handle == GSSD_NO_CREDENTIAL ? 0 : (uint_t)sizeof (gssd_cred_id_t); arg.cred_handle.GSS_CRED_ID_T_val = (char *)&cred_handle; arg.gssd_cred_verifier = gssd_cred_verifier; @@ -2505,7 +2501,7 @@ static int gssd_attach(dev_info_t *dip, ddi_attach_cmd_t cmd) switch (cmd) { case DDI_ATTACH: if (ddi_create_minor_node(dip, "gssd", S_IFCHR, 0, "gssd", 0) - == DDI_FAILURE) { + == DDI_FAILURE) { ddi_remove_minor_node(dip, NULL); return (DDI_FAILURE); } @@ -2651,7 +2647,7 @@ _init(void) int status; if ((status = ddi_soft_state_init(&gssd_state, - sizeof (gssd_devstate_t), 1)) != 0) + sizeof (gssd_devstate_t), 1)) != 0) return (status); if ((status = mod_install((struct modlinkage *)&modlinkage)) != 0) diff --git a/usr/src/uts/common/gssapi/gssd_clnt_stubs.c b/usr/src/uts/common/gssapi/gssd_clnt_stubs.c index cb53b00016..6dc6b7737a 100644 --- a/usr/src/uts/common/gssapi/gssd_clnt_stubs.c +++ b/usr/src/uts/common/gssapi/gssd_clnt_stubs.c @@ -376,8 +376,7 @@ kgss_add_cred_wrapped(minor_status, arg.uid = (OM_uint32)uid; arg.input_cred_handle.GSS_CRED_ID_T_len = - input_cred_handle == - (gssd_cred_id_t)(uintptr_t)GSS_C_NO_CREDENTIAL ? + input_cred_handle == GSSD_NO_CREDENTIAL ? 0 : (uint_t)sizeof (gssd_cred_id_t); arg.input_cred_handle.GSS_CRED_ID_T_val = (char *)&input_cred_handle; arg.gssd_cred_verifier = gssd_cred_verifier; @@ -497,8 +496,7 @@ kgss_add_cred(minor_status, gssd_cred_verifier = KCRED_TO_CREDV(input_cred_handle); gssd_input_cred_handle = KCRED_TO_CRED(input_cred_handle); } else { - gssd_input_cred_handle = - (gssd_cred_id_t)(uintptr_t)GSS_C_NO_CREDENTIAL; + gssd_input_cred_handle = GSSD_NO_CREDENTIAL; } err = kgss_add_cred_wrapped(minor_status, gssd_input_cred_handle, @@ -663,14 +661,14 @@ kgss_init_sec_context_wrapped( arg.uid = (OM_uint32)uid; arg.context_handle.GSS_CTX_ID_T_len = - *context_handle == (gssd_ctx_id_t)GSS_C_NO_CONTEXT ? + *context_handle == GSSD_NO_CONTEXT ? 0 : (uint_t)sizeof (gssd_ctx_id_t); arg.context_handle.GSS_CTX_ID_T_val = (char *)context_handle; arg.gssd_context_verifier = *gssd_context_verifier; arg.claimant_cred_handle.GSS_CRED_ID_T_len = - claimant_cred_handle == (gssd_cred_id_t)GSS_C_NO_CREDENTIAL ? + claimant_cred_handle == GSSD_NO_CREDENTIAL ? 0 : (uint_t)sizeof (gssd_cred_id_t); arg.claimant_cred_handle.GSS_CRED_ID_T_val = (char *)&claimant_cred_handle; @@ -680,8 +678,7 @@ kgss_init_sec_context_wrapped( arg.target_name.GSS_BUFFER_T_val = (char *)external_name.value; arg.name_type.GSS_OID_len = - name_type == GSS_C_NULL_OID ? - 0 : (uint_t)name_type->length; + name_type == GSS_C_NULL_OID ? 0 : (uint_t)name_type->length; arg.name_type.GSS_OID_val = name_type == GSS_C_NULL_OID ? @@ -771,8 +768,7 @@ kgss_init_sec_context_wrapped( output_token->value = (void *)MALLOC(output_token->length); (void) memcpy(output_token->value, - res.output_token.GSS_BUFFER_T_val, - output_token->length); + res.output_token.GSS_BUFFER_T_val, output_token->length); } /* if the call was successful, copy out the results */ @@ -784,8 +780,7 @@ kgss_init_sec_context_wrapped( * status codes, output token and context handle. */ *context_handle = - *((gssd_ctx_id_t *) - res.context_handle.GSS_CTX_ID_T_val); + *((gssd_ctx_id_t *)res.context_handle.GSS_CTX_ID_T_val); *gssd_context_verifier = res.gssd_context_verifier; if (res.status == GSS_S_COMPLETE) { @@ -793,13 +788,11 @@ kgss_init_sec_context_wrapped( *actual_mech_type = (gss_OID) MALLOC(sizeof (gss_OID_desc)); (*actual_mech_type)->length = - (OM_UINT32) - res.actual_mech_type.GSS_OID_len; + (OM_UINT32)res.actual_mech_type.GSS_OID_len; (*actual_mech_type)->elements = - (void *) - MALLOC((*actual_mech_type)->length); + (void *)MALLOC((*actual_mech_type)->length); (void) memcpy((*actual_mech_type)->elements, - (void *) res.actual_mech_type.GSS_OID_val, + (void *)res.actual_mech_type.GSS_OID_val, (*actual_mech_type)->length); } @@ -893,7 +886,7 @@ kgss_init_sec_context( * upcalls to gssd. */ kctx->mech = &default_gc; - kctx->gssd_ctx = (gssd_ctx_id_t)(uintptr_t)GSS_C_NO_CONTEXT; + kctx->gssd_ctx = GSSD_NO_CONTEXT; *context_handle = (gss_ctx_id_t)kctx; } else kctx = (struct kgss_ctx *)*context_handle; @@ -902,8 +895,7 @@ kgss_init_sec_context( gssd_cred_verifier = KCRED_TO_CREDV(claimant_cred_handle); gssd_cl_cred_handle = KCRED_TO_CRED(claimant_cred_handle); } else { - gssd_cl_cred_handle = - (gssd_cred_id_t)(uintptr_t)GSS_C_NO_CREDENTIAL; + gssd_cl_cred_handle = GSSD_NO_CREDENTIAL; } /* @@ -977,25 +969,22 @@ kgss_accept_sec_context_wrapped( arg.uid = (OM_uint32)uid; arg.context_handle.GSS_CTX_ID_T_len = - *context_handle == (gssd_ctx_id_t)GSS_C_NO_CONTEXT ? + *context_handle == GSSD_NO_CONTEXT ? 0 : (uint_t)sizeof (gssd_ctx_id_t); arg.context_handle.GSS_CTX_ID_T_val = (char *)context_handle; arg.gssd_context_verifier = *gssd_context_verifier; arg.verifier_cred_handle.GSS_CRED_ID_T_len = - verifier_cred_handle == - (gssd_cred_id_t)GSS_C_NO_CREDENTIAL ? + verifier_cred_handle == GSSD_NO_CREDENTIAL ? 0 : (uint_t)sizeof (gssd_cred_id_t); arg.verifier_cred_handle.GSS_CRED_ID_T_val = (char *)&verifier_cred_handle; arg.gssd_cred_verifier = gssd_cred_verifier; arg.input_token_buffer.GSS_BUFFER_T_len = - (uint_t)(input_token != GSS_C_NO_BUFFER ? - input_token->length : 0); + (uint_t)(input_token != GSS_C_NO_BUFFER ? input_token->length : 0); arg.input_token_buffer.GSS_BUFFER_T_val = - (char *)(input_token != GSS_C_NO_BUFFER ? - input_token->value : 0); + (char *)(input_token != GSS_C_NO_BUFFER ? input_token->value : 0); if (input_chan_bindings != GSS_C_NO_CHANNEL_BINDINGS) { arg.input_chan_bindings.present = YES; @@ -1059,19 +1048,16 @@ kgss_accept_sec_context_wrapped( *minor_status = res.minor_status; if (output_token != NULL && res.output_token.GSS_BUFFER_T_val != NULL) { - output_token->length = - res.output_token.GSS_BUFFER_T_len; - output_token->value = - (void *) MALLOC(output_token->length); + output_token->length = res.output_token.GSS_BUFFER_T_len; + output_token->value = (void *)MALLOC(output_token->length); (void) memcpy(output_token->value, - res.output_token.GSS_BUFFER_T_val, - output_token->length); + res.output_token.GSS_BUFFER_T_val, output_token->length); } /* if the call was successful, copy out the results */ - if (res.status == (OM_uint32) GSS_S_COMPLETE || - res.status == (OM_uint32) GSS_S_CONTINUE_NEEDED) { + if (res.status == (OM_uint32)GSS_S_COMPLETE || + res.status == (OM_uint32)GSS_S_CONTINUE_NEEDED) { /* * the only parameters that are ready when we @@ -1084,7 +1070,7 @@ kgss_accept_sec_context_wrapped( *gssd_context_verifier = res.gssd_context_verifier; /* these other parameters are only ready upon GSS_S_COMPLETE */ - if (res.status == (OM_uint32) GSS_S_COMPLETE) { + if (res.status == (OM_uint32)GSS_S_COMPLETE) { if (src_name != NULL) { src_name->length = @@ -1099,12 +1085,12 @@ kgss_accept_sec_context_wrapped( * for gss_import_name_for_mech() */ if (mech_type != NULL) { - *mech_type = (gss_OID) - MALLOC(sizeof (gss_OID_desc)); + *mech_type = + (gss_OID)MALLOC(sizeof (gss_OID_desc)); (*mech_type)->length = - (OM_UINT32) res.mech_type.GSS_OID_len; + (OM_UINT32)res.mech_type.GSS_OID_len; (*mech_type)->elements = - (void *) MALLOC((*mech_type)->length); + (void *)MALLOC((*mech_type)->length); (void) memcpy((*mech_type)->elements, res.mech_type.GSS_OID_val, (*mech_type)->length); @@ -1120,8 +1106,9 @@ kgss_accept_sec_context_wrapped( (res.delegated_cred_handle.GSS_CRED_ID_T_len != 0)) { kcred = KGSS_CRED_ALLOC(); - kcred->gssd_cred = *((gssd_cred_id_t *) - res.delegated_cred_handle.GSS_CRED_ID_T_val); + kcred->gssd_cred = + *((gssd_cred_id_t *) + res.delegated_cred_handle.GSS_CRED_ID_T_val); kcred->gssd_cred_verifier = res.gssd_context_verifier; *delegated_cred_handle = (gss_cred_id_t)kcred; @@ -1174,7 +1161,7 @@ kgss_accept_sec_context( if (*context_handle == GSS_C_NO_CONTEXT) { kctx = KGSS_ALLOC(); kctx->mech = &default_gc; - kctx->gssd_ctx = (gssd_ctx_id_t)(uintptr_t)GSS_C_NO_CONTEXT; + kctx->gssd_ctx = GSSD_NO_CONTEXT; *context_handle = (gss_ctx_id_t)kctx; } else kctx = (struct kgss_ctx *)*context_handle; @@ -1183,8 +1170,7 @@ kgss_accept_sec_context( gssd_cred_verifier = KCRED_TO_CREDV(verifier_cred_handle); gssd_ver_cred_handle = KCRED_TO_CRED(verifier_cred_handle); } else { - gssd_ver_cred_handle = - (gssd_cred_id_t)(uintptr_t)GSS_C_NO_CREDENTIAL; + gssd_ver_cred_handle = GSSD_NO_CREDENTIAL; } err = kgss_accept_sec_context_wrapped(minor_status, @@ -1308,7 +1294,7 @@ kgss_delete_sec_context_wrapped(void *private, /* copy the procedure arguments into the rpc arg parameter */ arg.context_handle.GSS_CTX_ID_T_len = - *context_handle == (gssd_ctx_id_t)(uintptr_t)GSS_C_NO_CONTEXT ? + *context_handle == GSSD_NO_CONTEXT ? 0 : (uint_t)sizeof (gssd_ctx_id_t); arg.context_handle.GSS_CTX_ID_T_val = (char *)context_handle; @@ -1381,8 +1367,7 @@ kgss_delete_sec_context( kctx = (struct kgss_ctx *)*context_handle; if (kctx->ctx_imported == FALSE) { - if (kctx->gssd_ctx == - (gssd_ctx_id_t)(uintptr_t)GSS_C_NO_CONTEXT) { + if (kctx->gssd_ctx == GSSD_NO_CONTEXT) { KGSS_FREE(kctx); *context_handle = GSS_C_NO_CONTEXT; return (GSS_S_COMPLETE); @@ -1558,7 +1543,7 @@ gss_buffer_desc token; gss_ctx_id_t internal_ctx_id; kctx = (struct kgss_ctx *)context_handle; - if (kctx->gssd_ctx != (gssd_ctx_id_t)(uintptr_t)GSS_C_NO_CONTEXT) { + if (kctx->gssd_ctx != GSSD_NO_CONTEXT) { return (GSS_S_FAILURE); } @@ -1801,9 +1786,7 @@ kgss_verify(OM_uint32 *minor_status, if (context_handle == GSS_C_NO_CONTEXT) return (GSS_S_FAILURE); return (KGSS_VERIFY(minor_status, context_handle, - message_buffer, - token_buffer, - qop_state)); + message_buffer, token_buffer, qop_state)); } /* EXPORT DELETE START */ @@ -2263,7 +2246,7 @@ kgss_inquire_cred_wrapped(minor_status, arg.uid = (OM_uint32) uid; arg.cred_handle.GSS_CRED_ID_T_len = - cred_handle == (gssd_cred_id_t)(uintptr_t)GSS_C_NO_CREDENTIAL ? + cred_handle == GSSD_NO_CREDENTIAL ? 0 : (uint_t)sizeof (gssd_cred_id_t); arg.cred_handle.GSS_CRED_ID_T_val = (char *)&cred_handle; arg.gssd_cred_verifier = gssd_cred_verifier; @@ -2415,7 +2398,7 @@ kgss_inquire_cred_by_mech_wrapped(minor_status, arg.uid = (OM_uint32) uid; arg.cred_handle.GSS_CRED_ID_T_len = - cred_handle == (gssd_cred_id_t)(uintptr_t)GSS_C_NO_CREDENTIAL ? + cred_handle == GSSD_NO_CREDENTIAL ? 0 : (uint_t)sizeof (gssd_cred_id_t); arg.cred_handle.GSS_CRED_ID_T_val = (char *)&cred_handle; arg.gssd_cred_verifier = gssd_cred_verifier; diff --git a/usr/src/uts/common/gssapi/include/mechglueP.h b/usr/src/uts/common/gssapi/include/mechglueP.h index 28242cce57..479a940a08 100644 --- a/usr/src/uts/common/gssapi/include/mechglueP.h +++ b/usr/src/uts/common/gssapi/include/mechglueP.h @@ -727,6 +727,9 @@ gssint_put_der_length( typedef unsigned int gssd_ctx_id_t; typedef unsigned int gssd_cred_id_t; +#define GSSD_NO_CONTEXT ((gssd_ctx_id_t)0) +#define GSSD_NO_CREDENTIAL ((gssd_cred_id_t)0) + #ifdef _KERNEL #ifndef _KRB5_H |