Date: Tue, 21 Jul 2020 19:27:02 +0200 From: Hadrien Lacour <hadrien.lacour@...teo.net> To: musl@...ts.openwall.com Subject: Re: perhaps we should add re[c]allocarray? On Tue, Jul 21, 2020 at 06:56:57PM +0200, Markus Wichmann wrote: > On Tue, Jul 21, 2020 at 04:18:35AM -0600, Ariadne Conill wrote: > > Hello, > > > > reallocarray and recallocarray are BSD extensions that solve similar issues as > > strlcpy/strlcat, but with array reallocations instead of strings. > > > > reallocarray itself is already part of glibc since 2.28. > > > > Unfortunately, while working on new ifupdown implementation for Alpine, I > > wanted to use recallocarray because it is very helpful in terms of pushing new > > strings to a string array (you will always maintain a NULL-terminated array, > > and you don't have to worry about it) -- but I discovered musl still does not > > have it. > > > > Anyway, I think it would be useful to include both functions in musl 1.2.1. > > If everyone agrees, I'll make a patch. > > > > Ariadne > > > > > > Seems mostly useless to me. reallocarray() is equivalent to realloc(), > multiplying the last two arguments. And recallocarray() does seem > useful, but moreso as a subroutine. I see little reason to put this into > a standard library. > > On a formal point of view, neither of these has been standardized. I can > find an Oracle man page for reallocarray(), but not recallocarray(). > Both are OpenBSD extensions. For glibc, I can find reallocarray() (which > mostly wraps realloc()), but no recallocarray() (I checked in the most > recent released version, which is 2.31 as of right now). > > It appears, reallocarray() enjoys more widespread adoption than > recallocarray(). Both can, however, be easily found by a compile/link > test. As stated above, however, the necessary functionality can easily > be written in whatever application needs it, so I don't see the point. > I've done that before; it is two lines if you manage your variables > well. > > JM2C, > Markus I'm pretty sure the point of reallocarray is that it checks for overflow during the multiplication of the arguments.
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.