summaryrefslogtreecommitdiffstats
path: root/src/lib/rpc/svc_auth_gss.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/rpc/svc_auth_gss.c')
-rw-r--r--src/lib/rpc/svc_auth_gss.c76
1 files changed, 38 insertions, 38 deletions
diff --git a/src/lib/rpc/svc_auth_gss.c b/src/lib/rpc/svc_auth_gss.c
index 990e7fa85c..cac57027bc 100644
--- a/src/lib/rpc/svc_auth_gss.c
+++ b/src/lib/rpc/svc_auth_gss.c
@@ -1,6 +1,6 @@
/*
svc_auth_gss.c
-
+
Copyright (c) 2000 The Regents of the University of Michigan.
All rights reserved.
@@ -160,7 +160,7 @@ svcauth_gss_acquire_cred(void)
maj_stat = gss_acquire_cred(&min_stat, svcauth_gss_name, 0,
GSS_C_NULL_OID_SET, GSS_C_ACCEPT,
&svcauth_gss_creds, NULL, NULL);
-
+
if (maj_stat != GSS_S_COMPLETE) {
log_status("gss_acquire_cred", maj_stat, min_stat);
return (FALSE);
@@ -172,18 +172,18 @@ static bool_t
svcauth_gss_release_cred(void)
{
OM_uint32 maj_stat, min_stat;
-
+
log_debug("in svcauth_gss_release_cred()");
-
+
maj_stat = gss_release_cred(&min_stat, &svcauth_gss_creds);
-
+
if (maj_stat != GSS_S_COMPLETE) {
log_status("gss_release_cred", maj_stat, min_stat);
return (FALSE);
}
-
+
svcauth_gss_creds = NULL;
-
+
return (TRUE);
}
@@ -198,14 +198,14 @@ svcauth_gss_accept_sec_context(struct svc_req *rqst,
OM_uint32 maj_stat = 0, min_stat = 0, ret_flags, seq;
log_debug("in svcauth_gss_accept_context()");
-
+
gd = SVCAUTH_PRIVATE(rqst->rq_xprt->xp_auth);
gc = (struct rpc_gss_cred *)rqst->rq_clntcred;
memset(gr, 0, sizeof(*gr));
/* Deserialize arguments. */
memset(&recv_tok, 0, sizeof(recv_tok));
-
+
if (!svc_getargs(rqst->rq_xprt, xdr_rpc_gss_init_args,
(caddr_t)&recv_tok))
return (FALSE);
@@ -237,7 +237,7 @@ svcauth_gss_accept_sec_context(struct svc_req *rqst,
goto errout;
}
/*
- * ANDROS: krb5 mechglue returns ctx of size 8 - two pointers,
+ * ANDROS: krb5 mechglue returns ctx of size 8 - two pointers,
* one to the mechanism oid, one to the internal_ctx_id
*/
if ((gr->gr_ctx.value = mem_alloc(sizeof(gss_union_ctx_id_desc))) == NULL) {
@@ -249,7 +249,7 @@ svcauth_gss_accept_sec_context(struct svc_req *rqst,
/* gr->gr_win = 0x00000005; ANDROS: for debugging linux kernel version... */
gr->gr_win = sizeof(gd->seqmask) * 8;
-
+
/* Save client info. */
gd->sec.mech = mech;
gd->sec.qop = GSS_C_QOP_DEFAULT;
@@ -265,7 +265,7 @@ svcauth_gss_accept_sec_context(struct svc_req *rqst,
maj_stat = gss_display_name(&min_stat, gd->client_name,
&gd->cname, &gd->sec.mech);
#ifdef SPKM
- }
+ }
#endif
if (maj_stat != GSS_S_COMPLETE) {
log_status("display_name", maj_stat, min_stat);
@@ -282,7 +282,7 @@ svcauth_gss_accept_sec_context(struct svc_req *rqst,
gss_buffer_desc mechname;
gss_oid_to_str(&min_stat, mech, &mechname);
-
+
log_debug("accepted context for %.*s with "
"<mech %.*s, qop %d, svc %d>",
gd->cname.length, (char *)gd->cname.value,
@@ -304,8 +304,8 @@ svcauth_gss_accept_sec_context(struct svc_req *rqst,
if (maj_stat != GSS_S_COMPLETE) {
goto errout;
}
-
-
+
+
rqst->rq_xprt->xp_verf.oa_flavor = RPCSEC_GSS;
rqst->rq_xprt->xp_verf.oa_base = gd->checksum.value;
rqst->rq_xprt->xp_verf.oa_length = gd->checksum.length;
@@ -326,7 +326,7 @@ svcauth_gss_validate(struct svc_req *rqst, struct svc_rpc_gss_data *gd, struct r
int32_t *buf;
log_debug("in svcauth_gss_validate()");
-
+
memset(rpchdr, 0, sizeof(rpchdr));
/* XXX - Reconstruct RPC header for signing (from xdr_callmsg). */
@@ -357,10 +357,10 @@ svcauth_gss_validate(struct svc_req *rqst, struct svc_rpc_gss_data *gd, struct r
checksum.value = msg->rm_call.cb_verf.oa_base;
checksum.length = msg->rm_call.cb_verf.oa_length;
-
+
maj_stat = gss_verify_mic(&min_stat, gd->ctx, &rpcbuf, &checksum,
&qop_state);
-
+
if (maj_stat != GSS_S_COMPLETE) {
log_status("gss_verify_mic", maj_stat, min_stat);
if (log_badverf != NULL)
@@ -383,7 +383,7 @@ svcauth_gss_nextverf(struct svc_req *rqst, u_int num)
if (rqst->rq_xprt->xp_auth == NULL)
return (FALSE);
-
+
gd = SVCAUTH_PRIVATE(rqst->rq_xprt->xp_auth);
gss_release_buffer(&min_stat, &gd->checksum);
@@ -401,7 +401,7 @@ svcauth_gss_nextverf(struct svc_req *rqst, u_int num)
rqst->rq_xprt->xp_verf.oa_flavor = RPCSEC_GSS;
rqst->rq_xprt->xp_verf.oa_base = (caddr_t)gd->checksum.value;
rqst->rq_xprt->xp_verf.oa_length = (u_int)gd->checksum.length;
-
+
return (TRUE);
}
@@ -419,7 +419,7 @@ gssrpc__svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg,
OM_uint32 min_stat;
log_debug("in svcauth_gss()");
-
+
/* Initialize reply. */
rqst->rq_xprt->xp_verf = gssrpc__null_auth;
@@ -445,7 +445,7 @@ gssrpc__svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg,
/* Deserialize client credentials. */
if (rqst->rq_cred.oa_length <= 0)
return (AUTH_BADCRED);
-
+
gc = (struct rpc_gss_cred *)rqst->rq_clntcred;
memset(gc, 0, sizeof(*gc));
@@ -455,7 +455,7 @@ gssrpc__svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg,
xdrmem_create(&xdrs, rqst->rq_cred.oa_base,
rqst->rq_cred.oa_length, XDR_DECODE);
log_debug("xdrmem_create() returned");
-
+
if (!xdr_rpc_gss_cred(&xdrs, gc)) {
log_debug("xdr_rpc_gss_cred() failed");
XDR_DESTROY(&xdrs);
@@ -495,7 +495,7 @@ gssrpc__svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg,
gd->seq = gc->gc_seq;
gd->seqmask |= (1 << offset);
}
-
+
if (gd->established) {
rqst->rq_clntname = (char *)gd->client_name;
rqst->rq_svccred = (char *)gd->ctx;
@@ -511,7 +511,7 @@ gssrpc__svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg,
if (!svcauth_gss_acquire_cred())
ret_freegc (AUTH_FAILED);
-
+
if (!svcauth_gss_accept_sec_context(rqst, &gr))
ret_freegc (AUTH_REJECTEDCRED);
@@ -522,7 +522,7 @@ gssrpc__svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg,
ret_freegc (AUTH_FAILED);
}
*no_dispatch = TRUE;
-
+
call_stat = svc_sendreply(rqst->rq_xprt, xdr_rpc_gss_init_res,
(caddr_t)&gr);
@@ -534,24 +534,24 @@ gssrpc__svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg,
if (gr.gr_major == GSS_S_COMPLETE)
gd->established = TRUE;
-
+
break;
-
+
case RPCSEC_GSS_DATA:
if (!svcauth_gss_validate(rqst, gd, msg))
ret_freegc (RPCSEC_GSS_CREDPROBLEM);
-
+
if (!svcauth_gss_nextverf(rqst, htonl(gc->gc_seq)))
ret_freegc (AUTH_FAILED);
break;
-
+
case RPCSEC_GSS_DESTROY:
if (rqst->rq_proc != NULLPROC)
ret_freegc (AUTH_FAILED); /* XXX ? */
if (!svcauth_gss_validate(rqst, gd, msg))
ret_freegc (RPCSEC_GSS_CREDPROBLEM);
-
+
if (!svcauth_gss_nextverf(rqst, htonl(gc->gc_seq)))
ret_freegc (AUTH_FAILED);
@@ -564,7 +564,7 @@ gssrpc__svcauth_gss(struct svc_req *rqst, struct rpc_msg *msg,
if (!svcauth_gss_release_cred())
ret_freegc (AUTH_FAILED);
-
+
SVCAUTH_DESTROY(rqst->rq_xprt->xp_auth);
rqst->rq_xprt->xp_auth = &svc_auth_none;
@@ -588,9 +588,9 @@ svcauth_gss_destroy(SVCAUTH *auth)
OM_uint32 min_stat;
log_debug("in svcauth_gss_destroy()");
-
+
gd = SVCAUTH_PRIVATE(auth);
-
+
gss_delete_sec_context(&min_stat, &gd->ctx, GSS_C_NO_BUFFER);
gss_release_buffer(&min_stat, &gd->cname);
gss_release_buffer(&min_stat, &gd->checksum);
@@ -600,7 +600,7 @@ svcauth_gss_destroy(SVCAUTH *auth)
mem_free(gd, sizeof(*gd));
mem_free(auth, sizeof(*auth));
-
+
return (TRUE);
}
@@ -608,11 +608,11 @@ static bool_t
svcauth_gss_wrap(SVCAUTH *auth, XDR *xdrs, xdrproc_t xdr_func, caddr_t xdr_ptr)
{
struct svc_rpc_gss_data *gd;
-
+
log_debug("in svcauth_gss_wrap()");
gd = SVCAUTH_PRIVATE(auth);
-
+
if (!gd->established || gd->sec.svc == RPCSEC_GSS_SVC_NONE) {
return ((*xdr_func)(xdrs, xdr_ptr));
}
@@ -627,7 +627,7 @@ svcauth_gss_unwrap(SVCAUTH *auth, XDR *xdrs, xdrproc_t xdr_func, caddr_t xdr_ptr
struct svc_rpc_gss_data *gd;
log_debug("in svcauth_gss_unwrap()");
-
+
gd = SVCAUTH_PRIVATE(auth);
if (!gd->established || gd->sec.svc == RPCSEC_GSS_SVC_NONE) {