From: Sami Kerola <kerolasa@iki.fi>
To: util-linux@vger.kernel.org
Cc: kerolasa@iki.fi
Subject: [PATCH 10/14] setpriv: avoid alloca() use xmalloc() instead
Date: Sun, 13 Jul 2014 21:24:49 +0100 [thread overview]
Message-ID: <1405283093-28182-11-git-send-email-kerolasa@iki.fi> (raw)
In-Reply-To: <1405283093-28182-1-git-send-email-kerolasa@iki.fi>
The getgroups() can return up to NGROUPS_MAX supplementary groups, that
is (since kernel 2.6.3) 65536 in total. The git_t is 4 bytes, so maximum
request is 256 kilobytes. When a system happen to have memory preasure
alloca() may not be able to allocate enough memory, making debugging
unnecessarily difficult. IMHO 64 pages is significant enough amount of
memory to be properly error checked at a time of allocation.
Reference: http://www.gnu.org/software/libc/manual/html_node/Disadvantages-of-Alloca.html
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
---
sys-utils/setpriv.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/sys-utils/setpriv.c b/sys-utils/setpriv.c
index 65921be..ccfa993 100644
--- a/sys-utils/setpriv.c
+++ b/sys-utils/setpriv.c
@@ -254,9 +254,10 @@ static void dump_groups(void)
return;
}
- groups = alloca(n * sizeof(gid_t));
+ groups = xmalloc(n * sizeof(gid_t));
n = getgroups(n, groups);
if (n < 0) {
+ free(groups);
warn("getgroups failed");
return;
}
@@ -273,6 +274,7 @@ static void dump_groups(void)
}
}
printf("\n");
+ free(groups);
}
static void dump(int dumplevel)
--
2.0.1
next prev parent reply other threads:[~2014-07-13 20:25 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-13 20:24 [PATCH 00/14] pull: some minor fixes Sami Kerola
2014-07-13 20:24 ` [PATCH 01/14] textual: fix some typos Sami Kerola
2014-07-13 20:24 ` [PATCH 02/14] cal: remove unnused structure and definition Sami Kerola
2014-07-13 20:24 ` [PATCH 03/14] setterm: remove unnecessary variable Sami Kerola
2014-07-13 20:24 ` [PATCH 04/14] lscpu: avoid use of bzero() in favor of memset() Sami Kerola
2014-07-13 20:24 ` [PATCH 05/14] cfdisk: add braces to ensure operation order Sami Kerola
2014-07-13 20:24 ` [PATCH 06/14] fdformat: match variable and print format types Sami Kerola
2014-07-13 20:24 ` [PATCH 07/14] mkfs.cramfs: use defined failure name rather than magic value Sami Kerola
2014-07-13 20:24 ` [PATCH 08/14] fdisk: avoid code duplication Sami Kerola
2014-07-13 20:24 ` [PATCH 09/14] dmesg: avoid unnecessary variable assignment Sami Kerola
2014-07-13 20:24 ` Sami Kerola [this message]
2014-07-13 20:24 ` [PATCH 11/14] whereis: avoid printing uninitialized string Sami Kerola
2014-07-13 20:24 ` [PATCH 12/14] libfdisk: do not do the same thing twice in single if statement Sami Kerola
2014-07-13 20:24 ` [PATCH 13/14] libsmartcols: avoid variable dereference after release Sami Kerola
2014-07-13 20:24 ` [PATCH 14/14] lscpu: avoid double free Sami Kerola
2014-07-14 14:08 ` [PATCH 00/14] pull: some minor fixes Karel Zak
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=1405283093-28182-11-git-send-email-kerolasa@iki.fi \
--to=kerolasa@iki.fi \
--cc=util-linux@vger.kernel.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: link
Be 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