According to commit "vfs: parse: deal with zero length string value",
kernel will set the param->string to null pointer in vfs_parse_fs_string()
if fs string has zero length.
Yet the problem is that, nfs_fs_context_parse_param() will dereferences the
param->string, without checking whether it is a null pointer, which may
trigger a null-ptr-deref bug.
This patch solves it by adding sanity check on param->string
in nfs_fs_context_parse_param().
Signed-off-by: Hawkins Jiawei <yin31149@gmail.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
                        return ret;
                break;
        case Opt_vers:
+               if (!param->string)
+                       goto out_invalid_value;
                trace_nfs_mount_assign(param->key, param->string);
                ret = nfs_parse_version_string(fc, param->string);
                if (ret < 0)
                break;
 
        case Opt_proto:
+               if (!param->string)
+                       goto out_invalid_value;
                trace_nfs_mount_assign(param->key, param->string);
                protofamily = AF_INET;
                switch (lookup_constant(nfs_xprt_protocol_tokens, param->string, -1)) {
                break;
 
        case Opt_mountproto:
+               if (!param->string)
+                       goto out_invalid_value;
                trace_nfs_mount_assign(param->key, param->string);
                mountfamily = AF_INET;
                switch (lookup_constant(nfs_xprt_protocol_tokens, param->string, -1)) {