Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 57b0e314 authored by Eric Biggers's avatar Eric Biggers Committed by Linus Torvalds
Browse files

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 commit 94c13f66 ("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: default avatar <syzbot+a22e0dc07567662c50bc@syzkaller.appspotmail.com>
Fixes: 00d60fd3 ("KEYS: Provide keyctls to drive the new key type ops for asymmetric keys [ver #2]")
Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
Cc: stable@kernel.org # 4.20
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent e1ef035d
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -50,6 +50,8 @@ static int keyctl_pkey_params_parse(struct kernel_pkey_params *params)
		if (*p == '\0' || *p == ' ' || *p == '\t')
			continue;
		token = match_token(p, param_keys, args);
		if (token == Opt_err)
			return -EINVAL;
		if (__test_and_set_bit(token, &token_mask))
			return -EINVAL;
		q = args[0].from;