Re: [PATCH] libsepol: invert only valid range of role bitmap

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

 



On Tue, Jan 25, 2022 at 4:17 PM James Carter <jwcart2@xxxxxxxxx> wrote:
>
> On Tue, Jan 25, 2022 at 2:46 PM Christian Göttsche
> <cgzones@xxxxxxxxxxxxxx> wrote:
> >
> > The length of an ebitmap is the current highest allocated (not set) bit
> > and always a multiple of MAPTYPE (= 64). The role ebitmap should only
> > have valid role bits set, even after inverting. The length might be
> > smaller than the maximum number of defined roles leading to non defined
> > role bits set afterwards.
> > Only invert up to the number of roles defined instead the full ebitmap
> > length, similar to type_set_expand().
> >
> > This also avoids timeouts on an invalid huge highbit set, since the
> > ebitmap has not been validated yet, on which inverting will take
> > excessive amount of memory and time, found by oss-fuzz (#43709).
> >
> > Signed-off-by: Christian Göttsche <cgzones@xxxxxxxxxxxxxx>
>
> Acked-by: James Carter <jwcart2@xxxxxxxxx>
>

Merged.
Thanks,
Jim

> > ---
> > This patch supersedes "libsepol: reject invalid roles before inverting"
> > https://patchwork.kernel.org/project/selinux/patch/20220117150200.24953-1-cgzones@xxxxxxxxxxxxxx/
> > ---
> >  libsepol/src/expand.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/libsepol/src/expand.c b/libsepol/src/expand.c
> > index 898e6b87..df8683ef 100644
> > --- a/libsepol/src/expand.c
> > +++ b/libsepol/src/expand.c
> > @@ -2481,7 +2481,7 @@ int role_set_expand(role_set_t * x, ebitmap_t * r, policydb_t * out, policydb_t
> >
> >         /* if role is to be complimented, invert the entire bitmap here */
> >         if (x->flags & ROLE_COMP) {
> > -               for (i = 0; i < ebitmap_length(r); i++) {
> > +               for (i = 0; i < p->p_roles.nprim; i++) {
> >                         if (ebitmap_get_bit(r, i)) {
> >                                 if (ebitmap_set_bit(r, i, 0))
> >                                         return -1;
> > --
> > 2.34.1
> >




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

  Powered by Linux