aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Biggers <[email protected]>2018-11-03 10:30:35 -0700
committerLinus Torvalds <[email protected]>2019-01-01 13:13:19 -0800
commit57b0e31453209d746c99e513d80b3d0c44a80891 (patch)
tree488525ecb8c89bcbdc8da1dc1eca4111870d955a
parente1ef035d272ef4dbfdda98e58699698305138856 (diff)
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 94c13f66e13c ("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: [email protected] Fixes: 00d60fd3b932 ("KEYS: Provide keyctls to drive the new key type ops for asymmetric keys [ver #2]") Signed-off-by: Eric Biggers <[email protected]> Cc: [email protected] # 4.20 Signed-off-by: Linus Torvalds <[email protected]>
-rw-r--r--security/keys/keyctl_pkey.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/security/keys/keyctl_pkey.c b/security/keys/keyctl_pkey.c
index 70e65a2ff207..8bdea5abad11 100644
--- a/security/keys/keyctl_pkey.c
+++ b/security/keys/keyctl_pkey.c
@@ -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;