Re: [PATCH] audit: skip sessionid sentinel value when auto-incrementing

From: Paul Moore
Date: Thu Nov 17 2016 - 18:34:54 EST


On Tue, Nov 15, 2016 at 3:49 AM, Richard Guy Briggs <rgb@xxxxxxxxxx> wrote:
> On 2016-11-14 15:17, Paul Moore wrote:
>> On Thu, Nov 10, 2016 at 1:41 AM, Richard Guy Briggs <rgb@xxxxxxxxxx> wrote:
>> > The value (unsigned int)-1 is used as a sentinel to indicate the
>> > sessionID is unset. Skip this value when the session_id value wraps.
>> >
>> > Signed-off-by: Richard Guy Briggs <rgb@xxxxxxxxxx>
>> > ---
>> > kernel/auditsc.c | 5 ++++-
>> > 1 files changed, 4 insertions(+), 1 deletions(-)
>>
>> Since we haven't merged the session ID kernel patches into audit#next
>> yet, why don't you just squash this patch in with the session ID patch
>> and resubmit upstream in one nice neat patch.
>
> This was an existing bug regardless of new functionality added, so the
> fix should not be buried in a new feature patch.

No, it's not an existing bug. The existing code simply reports/logs
the session ID, it doesn't filter on it, so there are no magic values
to worry about.

>> > diff --git a/kernel/auditsc.c b/kernel/auditsc.c
>> > index 5abf1dc..e414dfa 100644
>> > --- a/kernel/auditsc.c
>> > +++ b/kernel/auditsc.c
>> > @@ -2025,8 +2025,11 @@ int audit_set_loginuid(kuid_t loginuid)
>> > goto out;
>> >
>> > /* are we setting or clearing? */
>> > - if (uid_valid(loginuid))
>> > + if (uid_valid(loginuid)) {
>> > sessionid = (unsigned int)atomic_inc_return(&session_id);
>> > + if (unlikely(sessionid == (unsigned int)-1))
>> > + sessionid = (unsigned int)atomic_inc_return(&session_id);
>> > + }
>> >
>> > task->sessionid = sessionid;
>> > task->loginuid = loginuid;
>>
>> paul moore
>
> - RGB
>
> --
> Richard Guy Briggs <rgb@xxxxxxxxxx>
> Kernel Security Engineering, Base Operating Systems, Red Hat
> Remote, Ottawa, Canada
> Voice: +1.647.777.2635, Internal: (81) 32635



--
paul moore
www.paul-moore.com