From: Jarkko Sakkinen Date: Sat, 12 Dec 2015 11:19:52 +0000 (+0200) Subject: keys, trusted: fix: *do not* allow duplicate key options X-Git-Tag: v4.5-rc1~70^2~7 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=5208cc83423dde06924121a85368c721a27ca555;p=linux.git keys, trusted: fix: *do not* allow duplicate key options The trusted keys option parsing allows specifying the same option multiple times. The last option value specified is used. This is problematic because: * No gain. * This makes complicated to specify options that are dependent on other options. This patch changes the behavior in a way that option can be specified only once. Reported-by: James Morris James Morris Reviewed-by: Mimi Zohar Signed-off-by: Jarkko Sakkinen Acked-by: Peter Huewe --- diff --git a/security/keys/trusted.c b/security/keys/trusted.c index 903dace648a1..7c183c767a3a 100644 --- a/security/keys/trusted.c +++ b/security/keys/trusted.c @@ -736,11 +736,14 @@ static int getoptions(char *c, struct trusted_key_payload *pay, int res; unsigned long handle; unsigned long lock; + unsigned long token_mask = 0; while ((p = strsep(&c, " \t"))) { if (*p == '\0' || *p == ' ' || *p == '\t') continue; token = match_token(p, key_tokens, args); + if (test_and_set_bit(token, &token_mask)) + return -EINVAL; switch (token) { case Opt_pcrinfo: