public inbox for glibc-cvs@sourceware.org help / color / mirror / Atom feed
From: Joe Simmons-Talbott <josepht@sourceware.org> To: glibc-cvs@sourceware.org Subject: [glibc] nss: Get rid of alloca usage in makedb's write_output. Date: Thu, 5 Oct 2023 13:21:26 +0000 (GMT) [thread overview] Message-ID: <20231005132126.6483D385B512@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=820948edd906ccb475a641ac5c5622e79e7084cf commit 820948edd906ccb475a641ac5c5622e79e7084cf Author: Joe Simmons-Talbott <josimmon@redhat.com> 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 <arjun@redhat.com> 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 <inttypes.h> #include <libintl.h> #include <locale.h> +#include <scratch_buffer.h> #include <search.h> #include <stdbool.h> #include <stdio.h> @@ -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; }
reply other threads:[~2023-10-05 13:21 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20231005132126.6483D385B512@sourceware.org \ --to=josepht@sourceware.org \ --cc=glibc-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).