summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2013-03-22 20:53:08 +0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2013-04-05 01:01:00 +0400
commit1c74a244fcb61e6e1983d5725b8ccd5d3f51889c (patch)
treeeff47c8ae8eae01b7754d850877ee28ddaba149e
parent4edaa308888b4bd629fa025cc6d5b2bf1a2a51db (diff)
downloadlinux-1c74a244fcb61e6e1983d5725b8ccd5d3f51889c.tar.xz
SUNRPC: Don't recognize RPC_AUTH_MAXFLAVOR
RPC_AUTH_MAXFLAVOR is an invalid flavor, on purpose. Don't allow any processing whatsoever if a caller passes it to rpcauth_create() or rpcauth_get_gssinfo(). Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r--net/sunrpc/auth.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/sunrpc/auth.c b/net/sunrpc/auth.c
index 2bc0cc2196e0..ed2fdd210c0b 100644
--- a/net/sunrpc/auth.c
+++ b/net/sunrpc/auth.c
@@ -82,7 +82,7 @@ MODULE_PARM_DESC(auth_hashtable_size, "RPC credential cache hashtable size");
static u32
pseudoflavor_to_flavor(u32 flavor) {
- if (flavor >= RPC_AUTH_MAXFLAVOR)
+ if (flavor > RPC_AUTH_MAXFLAVOR)
return RPC_AUTH_GSS;
return flavor;
}
@@ -173,6 +173,9 @@ rpcauth_get_gssinfo(rpc_authflavor_t pseudoflavor, struct rpcsec_gss_info *info)
const struct rpc_authops *ops;
int result;
+ if (flavor >= RPC_AUTH_MAXFLAVOR)
+ return -EINVAL;
+
ops = auth_flavors[flavor];
if (ops == NULL)
request_module("rpc-auth-%u", flavor);