SUNRPC: Don't recognize RPC_AUTH_MAXFLAVOR
authorChuck Lever <chuck.lever@oracle.com>
Fri, 22 Mar 2013 16:53:08 +0000 (12:53 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Thu, 4 Apr 2013 21:01:00 +0000 (17:01 -0400)
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>
net/sunrpc/auth.c

index 2bc0cc2196e030adbec8cdcb37e40c6b72130209..ed2fdd210c0bac4f5569acbe5da9daa025012cdd 100644 (file)
@@ -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);