Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20221023151342.GQ29905@brightrain.aerifal.cx>
Date: Sun, 23 Oct 2022 11:13:42 -0400
From: Rich Felker <dalias@...c.org>
To: Ismael Luceno <ismael@...ev.co.uk>, musl@...ts.openwall.com
Subject: Re: [PATCH] remove strdupa

On Sun, Oct 23, 2022 at 04:10:46PM +0200, Szabolcs Nagy wrote:
> * Rich Felker <dalias@...c.org> [2022-10-23 01:46:22 -0400]:
> > On Sat, Oct 22, 2022 at 03:57:23PM +0200, Ismael Luceno wrote:
> > > There's no portable way to implement strdupa without double evaluation
> > > of it's parameter, and it's use leads to vulnerabilities, since there's
> > > no chance to check for stack overruns.
> > > 
> > > Signed-off-by: Ismael Luceno <ismael@...ev.co.uk>
> > > ---
> > >  include/string.h | 1 -
> > >  1 file changed, 1 deletion(-)
> > > 
> > > diff --git a/include/string.h b/include/string.h
> > > index 43ad0942edd5..65fe0d503004 100644
> > > --- a/include/string.h
> > > +++ b/include/string.h
> > > @@ -88,7 +88,6 @@ void explicit_bzero (void *, size_t);
> > >  #endif
> > >  
> > >  #ifdef _GNU_SOURCE
> > > -#define	strdupa(x)	strcpy(alloca(strlen(x)+1),x)
> > >  int strverscmp (const char *, const char *);
> > >  char *strchrnul(const char *, int);
> > >  char *strcasestr(const char *, const char *);
> > > -- 
> > > 2.38.1
> > 
> > Does anyone have strong opinions one way or the other on this --
> > especially distro folks who'd need to deal with the fallout?
> 
> debian code search finds strdupa in 126 packages,
> so it is widely used and not trivial to manually fix up,
> i'd expect distros to just readd that definition to avoid breakage.

Distros can of course add it with an ugly -D'strdupa(x)=...' in CFLAGS
too, or with a one-line patch to the affected packages to add the
#define. I would kinda expect some of these (likely any using
autotools or especially gnulib) already handle the case where it's not
defined and define their own, so maybe it wouldn't actually be that
much breakage (but of course this would also be a reduction in
bug-catching).

I think a reasonable (but unsatisfying) outcome of this thread might
end up being "do nothing until there's action to greatly reduce the
number of packages using strdupa" (or at least evaluate the situation
and determine that most would not break). I would really like to avoid
"improving" interfaces that are harmful and slated for removal, but I
also don't want to make unnecessary new burden on
distros/integrators/users.

Rich

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.