Messages in this thread Patch in this message | | | Subject | Re: [PATCH 2/6] KEYS: Reinstate EPERM for a key type name beginning with a '.' | From | Mimi Zohar <> | Date | Wed, 10 Sep 2014 19:36:44 -0400 |
| |
On Wed, 2014-09-10 at 22:22 +0100, David Howells wrote: > Reinstate the generation of EPERM for a key type name beginning with a '.' in > a userspace call. Types whose name begins with a '.' are internal only. > > The test was removed by: > > commit a4e3b8d79a5c6d40f4a9703abf7fe3abcc6c3b8d > Author: Mimi Zohar <zohar@linux.vnet.ibm.com> > Date: Thu May 22 14:02:23 2014 -0400 > Subject: KEYS: special dot prefixed keyring name bug fix >
The test was removed, as the patch log description indicates, because the comparison is against the wrong field. Even the function name indicates key_get_type_from_user() is about the key type, not the key or keyring name.
Debugging info:
diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c index e26f860..7a8d9b9 100644 --- a/security/keys/keyctl.c +++ b/security/keys/keyctl.c @@ -37,6 +37,7 @@ static int key_get_type_from_user(char *type, return ret; if (ret == 0 || ret >= len) return -EINVAL; + printk(KERN_INFO "%s: type %s \n", __func__, type); type[len - 1] = '\0'; return 0; }
: [ 7.725429]: key_get_type_from_user: type trusted : [ 9.007721] key_get_type_from_user: type keyring : [ 9.011889] key_get_type_from_user: type keyring : [ 9.068825] key_get_type_from_user: type encrypted : [ 9.268310] key_get_type_from_user: type asymmetric : [ 9.290360] key_get_type_from_user: type keyring : [ 9.354509] key_get_type_from_user: type asymmetric : [ 9.390396] key_get_type_from_user: type asymmetric : [ 9.414216] key_get_type_from_user: type asymmetric : [ 9.437155] key_get_type_from_user: type asymmetric
> I think we want to keep the restriction on type name so that userspace can't > add keys of a special internal type.
Definitely! Commit a4e3b8d7 added a comparison against the description.
> Note that removal of the test causes several of the tests in the keyutils > testsuite to fail.
Perhaps the added description test is insufficient, but reverting this commit won't resolve the underlying problem.
Mimi
> Signed-off-by: David Howells <dhowells@redhat.com> > Acked-by: Vivek Goyal <vgoyal@redhat.com> > cc: Mimi Zohar <zohar@linux.vnet.ibm.com> > --- > > security/keys/keyctl.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c > index e26f860e5f2e..eff88a5f5d40 100644 > --- a/security/keys/keyctl.c > +++ b/security/keys/keyctl.c > @@ -37,6 +37,8 @@ static int key_get_type_from_user(char *type, > return ret; > if (ret == 0 || ret >= len) > return -EINVAL; > + if (type[0] == '.') > + return -EPERM; > type[len - 1] = '\0'; > return 0; > } >
| |