From: Joe Simmons-Talbott Date: Tue, 13 Jun 2023 19:16:31 +0000 (-0400) Subject: grantpt: Get rid of alloca X-Git-Tag: glibc-2.38~128 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=01dd2875f85213b26beefb66caad3564da89d1d1;p=thirdparty%2Fglibc.git grantpt: Get rid of alloca Replace alloca with a scratch_buffer to avoid potential stack overflows. Message-Id: <20230613191631.1080455-1-josimmon@redhat.com> --- diff --git a/sysdeps/unix/grantpt.c b/sysdeps/unix/grantpt.c index 38fce525761..226e7adb75b 100644 --- a/sysdeps/unix/grantpt.c +++ b/sysdeps/unix/grantpt.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -147,10 +148,19 @@ grantpt (int fd) /* `sysconf' does not support _SC_GETGR_R_SIZE_MAX. Try a moderate value. */ grbuflen = 1024; - grtmpbuf = (char *) __alloca (grbuflen); + struct scratch_buffer sbuf; + scratch_buffer_init (&sbuf); + if (!scratch_buffer_set_array_size (&sbuf, 1, grbuflen)) + { + retval = -1; + goto cleanup; + } + grtmpbuf = sbuf.data; __getgrnam_r (TTY_GROUP, &grbuf, grtmpbuf, grbuflen, &p); if (p != NULL) tty_gid = p->gr_gid; + + scratch_buffer_free(&sbuf); } gid_t gid = tty_gid == -1 ? __getgid () : tty_gid;