From 30d7dbc6e2a6e68ae35ef8919c6fb53a95ac5093 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Fri, 22 Mar 2013 18:55:20 +0100 Subject: WIP preacquire creds. --- utils/gssd/gssd_proc.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/utils/gssd/gssd_proc.c b/utils/gssd/gssd_proc.c index cdc0b9a..57665fa 100644 --- a/utils/gssd/gssd_proc.c +++ b/utils/gssd/gssd_proc.c @@ -870,10 +870,13 @@ static OM_uint32 gss_pre_aquire_credential(OM_uint32 *ret_min, gss_cred_id_t *cred_handle) { OM_uint32 ret_maj = 0; + OM_uint32 min = 0; gss_name_t desired_name = GSS_C_NO_NAME; gss_OID_set desired_mechs = GSS_C_NULL_OID_SET; char *default_realm = NULL; + printerr(2, "FIXME: gss_pre_aquire_credential called\n"); + gssd_k5_get_default_realm(&default_realm); ret_maj = compose_user_principal(ret_min, uid, default_realm, @@ -893,6 +896,7 @@ static OM_uint32 gss_pre_aquire_credential(OM_uint32 *ret_min, goto failed; } + printerr(2, "FIXME: calling gss_acquire_cred\n"); ret_maj = gss_acquire_cred(ret_min, desired_name, GSS_C_INDEFINITE, @@ -901,13 +905,15 @@ static OM_uint32 gss_pre_aquire_credential(OM_uint32 *ret_min, cred_handle, NULL, NULL); + printerr(2, "FIXME: gss_acquire_cred gave ret_maj: %d, ret_min: %d\n", + ret_maj, *ret_min); failed: if (desired_name != GSS_C_NO_NAME) { - gss_release_name(ret_min, &desired_name); + gss_release_name(&min, &desired_name); } if (desired_mechs != GSS_C_NULL_OID_SET) { - gss_release_oid_set(ret_min, &desired_mechs); + gss_release_oid_set(&min, &desired_mechs); } /* FIXME: do we need to free default_realm ? guess not */ @@ -1136,11 +1142,13 @@ process_krb5_upcall(struct clnt_info *clp, uid_t uid, int fd, char *tgtname, printerr(2, "%s: service is '%s'\n", __func__, service ? service : ""); - printerr(2, "FIXME: trying preaquire creds first\n"); - create_resp = create_auth_rpc_client(clp, &rpc_clnt, &auth, uid, - AUTHTYPE_KRB5, 1); - if (create_resp == 0) { - goto auth_data; + if (uid != 0) { + printerr(2, "FIXME: trying preaquire creds first for uid: %d\n", uid); + create_resp = create_auth_rpc_client(clp, &rpc_clnt, &auth, uid, + AUTHTYPE_KRB5, 1); + if (create_resp == 0) { + goto auth_data; + } } if (uid != 0 || (uid == 0 && root_uses_machine_creds == 0 && -- cgit