On Tue, Sep 2, 2025 at 2:50 PM Paul Moore <p...@paul-moore.com> wrote: > On Tue, Sep 2, 2025 at 7:00 AM Stanislav Fort <stanislav.f...@aisle.com> > wrote: > > > > When a watch on dir=/ is combined with an fsnotify event for a > > single-character name directly under / (e.g., creating /a), an > > out-of-bounds read can occur in audit_compare_dname_path(). > > > > The helper parent_len() returns 1 for "/". In audit_compare_dname_path(), > > when parentlen equals the full path length (1), the code sets p = path + 1 > > and pathlen = 1 - 1 = 0. The subsequent loop then dereferences > > p[pathlen - 1] (i.e., p[-1]), causing an out-of-bounds read. > > > > Fix this by adding a pathlen > 0 check to the while loop condition > > to prevent the out-of-bounds access. > > > > Reported-by: Stanislav Fort <disclos...@aisle.com> > > Suggested-by: Linus Torvalds <torva...@linuxfoundation.org> > > Signed-off-by: Stanislav Fort <disclos...@aisle.com>
I also just noticed a disconnect on the email address. I can leave the Reported-by email as disclosure@, but do you mind if I convert your Signed-off-by email to stanislav.fort@? > > --- > > kernel/auditfilter.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > Thanks Stanislav. It looks like this problem was likely introduced in > e92eebb0d611 ("audit: fix suffixed '/' filename matching"), I'll add a > 'Fixes:' and a stable tag. > > I'm building a test kernel right now to test things, but did you > verify that the path matching fixed in e92eebb0d611 still works > correctly? > > > diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c > > index e3f42018ed46..f7708fe2c457 100644 > > --- a/kernel/auditfilter.c > > +++ b/kernel/auditfilter.c > > @@ -1326,7 +1326,7 @@ int audit_compare_dname_path(const struct qstr > > *dname, const char *path, int par > > > > /* handle trailing slashes */ > > pathlen -= parentlen; > > - while (p[pathlen - 1] == '/') > > + while (pathlen > 0 && p[pathlen - 1] == '/') > > pathlen--; > > > > if (pathlen != dlen) > > -- > > 2.39.3 (Apple Git-146) -- paul-moore.com