svn commit: r270102 - head/bin/sh
Jilles Tjoelker
jilles at FreeBSD.org
Sun Aug 17 16:40:30 UTC 2014
Author: jilles
Date: Sun Aug 17 16:40:29 2014
New Revision: 270102
URL: http://svnweb.freebsd.org/changeset/base/270102
Log:
sh: Reject integer overflow in number and is_number.
Modified:
head/bin/sh/mystring.c
Modified: head/bin/sh/mystring.c
==============================================================================
--- head/bin/sh/mystring.c Sun Aug 17 14:26:12 2014 (r270101)
+++ head/bin/sh/mystring.c Sun Aug 17 16:40:29 2014 (r270102)
@@ -82,9 +82,17 @@ number(const char *s)
int
is_number(const char *p)
{
- do {
- if (! is_digit(*p))
+ const char *q;
+
+ if (*p == '\0')
+ return 0;
+ while (*p == '0')
+ p++;
+ for (q = p; *q != '\0'; q++)
+ if (! is_digit(*q))
return 0;
- } while (*++p != '\0');
+ if (q - p > 10 ||
+ (q - p == 10 && memcmp(p, "2147483647", 10) > 0))
+ return 0;
return 1;
}
More information about the svn-src-all
mailing list