Re: [PATCH] libsepol: Properly handle types associated to role attributes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Mar 14, 2021 at 8:44 PM Nicolas Iooss <nicolas.iooss@xxxxxxx> wrote:
>
> On Tue, Mar 9, 2021 at 10:37 PM James Carter <jwcart2@xxxxxxxxx> wrote:
> >
> > Types associated to role attributes in optional blocks are not
> > associated with the roles that have that attribute. The problem
> > is that role_fix_callback is called before the avrule_decls are
> > walked.
> >
> > Example/
> >   class CLASS1
> >   sid kernel
> >   class CLASS1 { PERM1 }
> >   type TYPE1;
> >   type TYPE1A;
> >   allow TYPE1 self : CLASS1 PERM1;
> >   attribute_role ROLE_ATTR1A;
> >   role ROLE1;
> >   role ROLE1A;
> >   roleattribute ROLE1A ROLE_ATTR1A;
> >   role ROLE1 types TYPE1;
> >   optional {
> >     require {
> >       class CLASS1 PERM1;
> >     }
> >     role ROLE_ATTR1A types TYPE1A;
> >   }
> >   user USER1 roles ROLE1;
> >   sid kernel USER1:ROLE1:TYPE1
> >
> > In this example ROLE1A will not have TYPE1A associated to it.
> >
> > Call role_fix_callback() after the avrule_decls are walked.
> >
> > Signed-off-by: James Carter <jwcart2@xxxxxxxxx>
>
> Acked-by: Nicolas Iooss <nicolas.iooss@xxxxxxx>

Merged.

Thanks!
Nicolas

> > ---
> >  libsepol/src/expand.c | 9 +++++----
> >  1 file changed, 5 insertions(+), 4 deletions(-)
> >
> > diff --git a/libsepol/src/expand.c b/libsepol/src/expand.c
> > index eac7e450..1ee3e48f 100644
> > --- a/libsepol/src/expand.c
> > +++ b/libsepol/src/expand.c
> > @@ -3017,10 +3017,6 @@ int expand_module(sepol_handle_t * handle,
> >         if (hashtab_map(state.base->p_roles.table,
> >                         role_bounds_copy_callback, &state))
> >                 goto cleanup;
> > -       /* escalate the type_set_t in a role attribute to all regular roles
> > -        * that belongs to it. */
> > -       if (hashtab_map(state.base->p_roles.table, role_fix_callback, &state))
> > -               goto cleanup;
> >
> >         /* copy MLS's sensitivity level and categories - this needs to be done
> >          * before expanding users (they need to be indexed too) */
> > @@ -3086,6 +3082,11 @@ int expand_module(sepol_handle_t * handle,
> >                 goto cleanup;
> >         }
> >
> > +       /* escalate the type_set_t in a role attribute to all regular roles
> > +        * that belongs to it. */
> > +       if (hashtab_map(state.base->p_roles.table, role_fix_callback, &state))
> > +               goto cleanup;
> > +
> >         if (copy_and_expand_avrule_block(&state) < 0) {
> >                 ERR(handle, "Error during expand");
> >                 goto cleanup;
> > --
> > 2.26.2
> >




[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux