KEYS: fix parsing invalid pkey info string
We need to check the return value of match_token() for Opt_err before doing anything with it. [ Not only did the old "-1" value for Opt_err cause problems for the __test_and_set_bit(), as fixed in commit94c13f66e1
("security: don't use a negative Opt_err token index"), but accessing "args[0].from" is invalid for the Opt_err case, as pointed out by Eric later. - Linus ] Reported-by: syzbot+a22e0dc07567662c50bc@syzkaller.appspotmail.com Fixes:00d60fd3b9
("KEYS: Provide keyctls to drive the new key type ops for asymmetric keys [ver #2]") Signed-off-by: Eric Biggers <ebiggers@google.com> Cc: stable@kernel.org # 4.20 Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
e1ef035d27
commit
57b0e31453
|
@ -50,6 +50,8 @@ static int keyctl_pkey_params_parse(struct kernel_pkey_params *params)
|
||||||
if (*p == '\0' || *p == ' ' || *p == '\t')
|
if (*p == '\0' || *p == ' ' || *p == '\t')
|
||||||
continue;
|
continue;
|
||||||
token = match_token(p, param_keys, args);
|
token = match_token(p, param_keys, args);
|
||||||
|
if (token == Opt_err)
|
||||||
|
return -EINVAL;
|
||||||
if (__test_and_set_bit(token, &token_mask))
|
if (__test_and_set_bit(token, &token_mask))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
q = args[0].from;
|
q = args[0].from;
|
||||||
|
|
Loading…
Reference in New Issue