From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7932) id 6483D385B512; Thu, 5 Oct 2023 13:21:26 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6483D385B512 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1696512086; bh=dBvBDZaRJEJlG2C11ioZpNfhFIUQ6ItWmWeqMu4wYyw=; h=From:To:Subject:Date:From; b=A7bUGlPsVQcwPYq3NKVNCSkqzCtdX4UL101PqvquRClog62ltXjcDDyEMIbZk9S7W UyB7j0IZxn+/MqrVdRHt/Po0FKWrGaK9aQH7b7aB3Spyel5+LbgpyyfkBljcXyOswv 2KDJzcsN172b+1DOBDrz7rCsSpf+F1u9jBpwbn+U= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Joe Simmons-Talbott To: glibc-cvs@sourceware.org Subject: [glibc] nss: Get rid of alloca usage in makedb's write_output. X-Act-Checkin: glibc X-Git-Author: Joe Simmons-Talbott X-Git-Refname: refs/heads/master X-Git-Oldrev: be7a5468d4f694ee8d052b537141f51af43ca7f2 X-Git-Newrev: 820948edd906ccb475a641ac5c5622e79e7084cf Message-Id: <20231005132126.6483D385B512@sourceware.org> Date: Thu, 5 Oct 2023 13:21:26 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=820948edd906ccb475a641ac5c5622e79e7084cf commit 820948edd906ccb475a641ac5c5622e79e7084cf Author: Joe Simmons-Talbott Date: Wed Oct 4 18:18:02 2023 +0000 nss: Get rid of alloca usage in makedb's write_output. Replace alloca usage with a scratch_buffer. Reviewed-by: Arjun Shankar Diff: --- nss/makedb.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/nss/makedb.c b/nss/makedb.c index 48c8fe1333..e1c9508cd1 100644 --- a/nss/makedb.c +++ b/nss/makedb.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -739,7 +740,15 @@ write_output (int fd) struct nss_db_header *header; uint64_t file_offset = (sizeof (struct nss_db_header) + (ndatabases * sizeof (header->dbs[0]))); - header = alloca (file_offset); + struct scratch_buffer sbuf; + scratch_buffer_init (&sbuf); + + if (!scratch_buffer_set_array_size (&sbuf, 1, file_offset)) + { + error (0, errno, gettext ("failed to allocate memory")); + return EXIT_FAILURE; + } + header = sbuf.data; header->magic = NSS_DB_MAGIC; header->ndbs = ndatabases; @@ -803,6 +812,7 @@ write_output (int fd) if (writev (fd, iov, iov_nelts) != keydataoffset) { error (0, errno, gettext ("failed to write new database file")); + scratch_buffer_free (&sbuf); return EXIT_FAILURE; } @@ -810,6 +820,7 @@ write_output (int fd) DIAG_POP_NEEDS_COMMENT; #endif + scratch_buffer_free (&sbuf); return EXIT_SUCCESS; }