Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Fri, 21 Jun 2024 21:06:01 -0400
From: Rich Felker <dalias@...c.org>
To: Florian Ziesche <florian.ziesche@...il.com>
Cc: musl@...ts.openwall.com
Subject: Re: [PATCH] dynlink: fix get_lfs64() with posix_fallocate64

On Thu, May 23, 2024 at 04:28:03PM -0400, Rich Felker wrote:
> On Fri, May 10, 2024 at 06:01:58PM +0200, Florian Ziesche wrote:
> > Hi,
> > 
> > this patch increases the buffer size by one in get_lfs64() so that it
> > works with posix_fallocate64.
> > "posix_fallocate64" is 17 characters long, so 16 is one too short.
> > 
> > Simplified example:
> > before: https://compiler-explorer.com/z/4qcPhcaWr
> > after: https://compiler-explorer.com/z/scGvhddKW
> > 
> > ---
> > diff --git a/ldso/dynlink.c b/ldso/dynlink.c
> > index 42687da2..8707ae1c 100644
> > --- a/ldso/dynlink.c
> > +++ b/ldso/dynlink.c
> > @@ -363,7 +363,7 @@ static struct symdef get_lfs64(const char *name)
> >          "stat\0statfs\0statvfs\0tmpfile\0truncate\0versionsort\0"
> >          "__fxstat\0__fxstatat\0__lxstat\0__xstat\0";
> >      size_t l;
> > -    char buf[16];
> > +    char buf[17];
> >      for (l=0; name[l]; l++) {
> >          if (l >= sizeof buf) goto nomatch;
> >          buf[l] = name[l];
> 
> Thanks for catching this. I questioned whether the 17 is sufficient,
> but indeed the buffer is never nul terminated except when removing the
> 64, so it should be ok.
> 
> I think I'll apply your patch as a direct fix, but the whole copying
> operation is unnecessary and I'll probably remove it. It works just as
> well to strncmp and pass p instead of buf to find_sym, so that a
> mutable copy of the name to lookup is never needed.

Applied. Does the attached look ok to get rid of the copy entirely? It
passed basic smoke testing here.


View attachment "get_lfs64.diff" of type "text/plain" (920 bytes)

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.