mirror of
git://git.musl-libc.org/musl
synced 2025-02-19 04:16:50 +00:00
avoid excessive stack usage in getcwd
to support the GNU extension of allocating a buffer for getcwd's result when a null pointer is passed without incurring a link dependency on free, we use a PATH_MAX-sized buffer on the stack and only duplicate it to allocated storage after the operation succeeds. unfortunately this imposed excessive stack usage on all callers, including those not making use of the GNU extension. instead, use a VLA to make stack allocation conditional.
This commit is contained in:
parent
e3c682ab52
commit
375840c7d8
@ -6,10 +6,10 @@
|
||||
|
||||
char *getcwd(char *buf, size_t size)
|
||||
{
|
||||
char tmp[PATH_MAX];
|
||||
char tmp[buf ? 1 : PATH_MAX];
|
||||
if (!buf) {
|
||||
buf = tmp;
|
||||
size = PATH_MAX;
|
||||
size = sizeof tmp;
|
||||
} else if (!size) {
|
||||
errno = EINVAL;
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user