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; } _______________________________________________ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"