summaryrefslogtreecommitdiffhomepage
path: root/libbb/sysconf.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2014-12-24 01:46:29 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2014-12-24 01:46:29 +0100
commitca9c4653a95907e32674c2eb5dc3921dc8e6f1a0 (patch)
treeae34c51b8329a5cdb73d4a5f6c242d20b14e9e8c /libbb/sysconf.c
parent11775edbfc27d2ad1cd0dff3f7af385f67719866 (diff)
libbb: add sanity check in bb_arg_max()
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb/sysconf.c')
-rw-r--r--libbb/sysconf.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/libbb/sysconf.c b/libbb/sysconf.c
index cfad9cdc0..8c1caef5c 100644
--- a/libbb/sysconf.c
+++ b/libbb/sysconf.c
@@ -11,7 +11,15 @@
#if !defined(bb_arg_max)
unsigned FAST_FUNC bb_arg_max(void)
{
- return sysconf(_SC_ARG_MAX);
+ long r = sysconf(_SC_ARG_MAX);
+
+ /* I've seen a version of uclibc which returned -1.
+ * Guard about it, and also avoid insanely large values
+ */
+ if ((unsigned long)r > 64*1024*1024)
+ r = 64*1024*1024;
+
+ return r;
}
#endif