Re: [PATCH] Filesystem capabilities support

Nicholas Hans Simmonds
2005-07-14T04:31:53Z

On Wed, Jul 13, 2005 at 01:51:46PM -0400, Horst von Brand wrote:
> Nicholas Hans Simmonds <nhstux@gmail.com> wrote:
> > Sorry, my earlier reply seems to have gotten lost somewhere. I've been
> > pondering this issue for some time and am still not sure what's the best
> > answer. I've attached a small patch which handles this by detecting byte
> > swapping of the version code. I'm not convinced it's necessary but
> > shouldn't hurt.
> >
> > diff --git a/security/commoncap.c b/security/commoncap.c
> > --- a/security/commoncap.c
> > +++ b/security/commoncap.c
> > @@ -153,6 +153,15 @@ int cap_bprm_set_security (struct linux_
> > down(&bprm_dentry->d_inode->i_sem);
> > ret = bprm_getxattr(bprm_dentry,XATTR_CAP_SET,&caps,sizeof(caps));
> > if(ret == sizeof(caps)) {
> > + if(caps.version = swab32(_LINUX_CAPABILITY_VERSION)) {
> ^
> |
> +-- Surely wrong?!
>

True, just noticed that. Amazing how even the simplest patches provide
such ample opportunity to shoot oneself in the foot.

> > + swab32s(&caps.version);
> > + swab32s(&caps.effective);
> > + swab32s(&caps.mask_effective);
> > + swab32s(&caps.permitted);
> > + swab32s(&caps.mask_permitted);
> > + swab32s(&caps.inheritable);
> > + swab32s(&caps.mask_inheritable);
> > + }
> > if(caps.version == _LINUX_CAPABILITY_VERSION) {
> > cap_t(bprm->cap_effective) &= caps.mask_effective;
> > cap_t(bprm->cap_effective) |= caps.effective;
> --
> Dr. Horst H. von Brand User #22616 counter.li.org
> Departamento de Informatica Fono: +56 32 654431
> Universidad Tecnica Federico Santa Maria +56 32 654239
> Casilla 110-V, Valparaiso, Chile Fax: +56 32 797513

Other than this, what are the general thoughts about this method as
opposed to just using a well defined byte order?

Thanks,

Nicholas