Commit 74983ac2 authored by David Howells's avatar David Howells Committed by Al Viro

vfs: Make fs_parse() handle fs_param_is_fd-type params better

Make fs_parse() handle fs_param_is_fd-type parameters that are passed a
string by converting it to an integer (in addition to handling direct fd
specification).

Also range check the integer.

[fix from  Yin Fengwei folded]
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent f3235626
......@@ -204,9 +204,23 @@ int fs_parse(struct fs_context *fc,
goto okay;
case fs_param_is_fd: {
if (param->type != fs_value_is_file)
switch (param->type) {
case fs_value_is_string:
if (!result->has_value)
goto bad_value;
goto okay;
ret = kstrtouint(param->string, 0, &result->uint_32);
break;
case fs_value_is_file:
result->uint_32 = param->dirfd;
ret = 0;
default:
goto bad_value;
}
if (result->uint_32 > INT_MAX)
goto bad_value;
goto maybe_okay;
}
case fs_param_is_blockdev:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment