X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Fsunrpc%2Fauth_gss%2Fsvcauth_gss.c;h=03bd7bd8c7d8010e4c43c21049e4d298da963572;hb=2ab7e6fcc578694936be605151227a660d2f1b95;hp=dae18e9792a69ee723b7da0b2b508beccdfbe6cd;hpb=86090fcac5e27b630656fe3d963a6b80e26dac44;p=linux-2.6.git diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c index dae18e979..03bd7bd8c 100644 --- a/net/sunrpc/auth_gss/svcauth_gss.c +++ b/net/sunrpc/auth_gss/svcauth_gss.c @@ -570,14 +570,14 @@ gss_verify_header(struct svc_rqst *rqstp, struct rsc *rsci, } if (gc->gc_seq > MAXSEQ) { - dprintk("svcauth_gss: discarding request with large" - " sequence number %d\n", gc->gc_seq); + dprintk("RPC: svcauth_gss: discarding request with large sequence number %d\n", + gc->gc_seq); *authp = rpcsec_gsserr_ctxproblem; return SVC_DENIED; } if (!gss_check_seq_num(rsci, gc->gc_seq)) { - dprintk("svcauth_gss: discarding request with old" - " sequence number %d\n", gc->gc_seq); + dprintk("RPC: svcauth_gss: discarding request with old sequence number %d\n", + gc->gc_seq); return SVC_DROP; } return SVC_OK; @@ -617,19 +617,15 @@ struct gss_domain { u32 pseudoflavor; }; -/* XXX this should be done in gss_pseudoflavors, and shouldn't be hardcoded: */ static struct auth_domain * find_gss_auth_domain(struct gss_ctx *ctx, u32 svc) { - switch(gss_get_pseudoflavor(ctx, 0, svc)) { - case RPC_AUTH_GSS_KRB5: - return auth_domain_find("gss/krb5"); - case RPC_AUTH_GSS_KRB5I: - return auth_domain_find("gss/krb5i"); - case RPC_AUTH_GSS_KRB5P: - return auth_domain_find("gss/krb5p"); - } - return NULL; + char *name; + + name = gss_service_to_auth_domain_name(ctx->mech_type, svc); + if (!name) + return NULL; + return auth_domain_find(name); } int @@ -637,19 +633,17 @@ svcauth_gss_register_pseudoflavor(u32 pseudoflavor, char * name) { struct gss_domain *new; struct auth_domain *test; - static char *prefix = "gss/"; - int stat = -1; + int stat = -ENOMEM; new = kmalloc(sizeof(*new), GFP_KERNEL); if (!new) goto out; cache_init(&new->h.h); atomic_inc(&new->h.h.refcnt); - new->h.name = kmalloc(strlen(name) + strlen(prefix) + 1, GFP_KERNEL); + new->h.name = kmalloc(strlen(name) + 1, GFP_KERNEL); if (!new->h.name) goto out_free_dom; - strcpy(new->h.name, prefix); - strcat(new->h.name, name); + strcpy(new->h.name, name); new->h.flavour = RPC_AUTH_GSS; new->pseudoflavor = pseudoflavor; new->h.h.expiry_time = NEVER; @@ -670,6 +664,8 @@ out: return stat; } +EXPORT_SYMBOL(svcauth_gss_register_pseudoflavor); + static inline int read_u32_from_xdr_buf(struct xdr_buf *buf, int base, u32 *obj) { @@ -755,7 +751,7 @@ svcauth_gss_accept(struct svc_rqst *rqstp, u32 *authp) u32 *reject_stat = resv->iov_base + resv->iov_len; int ret; - dprintk("RPC: svcauth_gss: argv->iov_len = %zd\n",argv->iov_len); + dprintk("RPC: svcauth_gss: argv->iov_len = %zd\n",argv->iov_len); *authp = rpc_autherr_badcred; if (!svcdata)