Re: [RFC PATCH 1/3] lsm: cleanup the size counters in security_getselfattr()

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

 



On Tue, Oct 24, 2023 at 6:23 PM Casey Schaufler <casey@xxxxxxxxxxxxxxxx> wrote:
> On 10/24/2023 2:35 PM, Paul Moore wrote:
> > Zero out all of the size counters in the -E2BIG case (buffer too
> > small) to help make the current code a bit more robust in the face of
> > future code changes.
>
> I don't see how this change would have the described effect.
> What it looks like it would do is change the return from -E2BIG
> to 0, which would not have the desired result.

When @toobig is true, which it will be when one of the individual LSMs
return -E2BIG, the return value of security_getselfattr() is fixed to
-E2BIG (check the if-statements at the end of the function).  Setting
@rc to zero as in this patch simply preserves some sanity in the
@count variable as we are no longer subtracting the E2BIG errno from
the @count value.  Granted, in the @toobig case, @count doesn't do
anything meaningful, but I believe this does harden the code against
future changes.

Look at the discussion between Mickaël and I in the v15 04/11 patch
for more background.

https://lore.kernel.org/linux-security-module/20230912205658.3432-5-casey@xxxxxxxxxxxxxxxx

> > Signed-off-by: Paul Moore <paul@xxxxxxxxxxxxxx>
> > ---
> >  security/security.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/security/security.c b/security/security.c
> > index 988483fcf153..9c63acded4ee 100644
> > --- a/security/security.c
> > +++ b/security/security.c
> > @@ -3951,8 +3951,9 @@ int security_getselfattr(unsigned int attr, struct lsm_ctx __user *uctx,
> >                       continue;
> >               }
> >               if (rc == -E2BIG) {
> > -                     toobig = true;
> > +                     rc = 0;
> >                       left = 0;
> > +                     toobig = true;
> >               } else if (rc < 0)
> >                       return rc;
> >               else

-- 
paul-moore.com




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

  Powered by Linux