|
Message-ID: <CAA2zVHpQ3iuq_UydEJ0E3G-pvTvtu6v7KHeo8MSGw5JEb4JS8Q@mail.gmail.com>
Date: Fri, 21 Oct 2022 18:09:42 -0400
From: James Y Knight <jyknight@...gle.com>
To: musl@...ts.openwall.com
Cc: Rich Felker <dalias@...c.org>, Ismael Luceno <ismael@...ev.co.uk>
Subject: Re: [RFC PATCH] implement strndupa
>
> #define strdupa(x) strcpy(alloca(strlen(x)+1),x)
> +#define strndupa(x, n) strlcpy(alloca(strnlen((x), (n)), (x), (n))
This causes the parameters to be evaluated multiple times -- and that is
also a problem with the existing strdupa. Unfortunately it's impossible to
implement these macros without multiple-evaluation, unless you use the GCC
statement-expression language extension (as glibc does).
IMO, musl should either use that extension, despite the general policy of
avoiding such non-standard language extensions, or simply not implement
these functions at all. Implementing them, but having them incorrectly
multiply-evaluate the parameters seems like the worst of the options...
Content of type "text/html" skipped
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.