summaryrefslogtreecommitdiffstats
path: root/generic/tclBinary.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2017-05-08 16:14:10 (GMT)
committerdgp <dgp@users.sourceforge.net>2017-05-08 16:14:10 (GMT)
commit43e76a45e9898ae95f9bcd31bde84e224a92f4b4 (patch)
treec726fd889dd910320aa42ffefd5165ad7542926b /generic/tclBinary.c
parente78b0c89457f00810603c8d4c21a67663327d88f (diff)
parentca65694482559e483a5684779f8cb6ee6a850d31 (diff)
downloadtcl-43e76a45e9898ae95f9bcd31bde84e224a92f4b4.zip
tcl-43e76a45e9898ae95f9bcd31bde84e224a92f4b4.tar.gz
tcl-43e76a45e9898ae95f9bcd31bde84e224a92f4b4.tar.bz2
merge trunk
Diffstat (limited to 'generic/tclBinary.c')
-rw-r--r--generic/tclBinary.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/generic/tclBinary.c b/generic/tclBinary.c
index d0066e5..03ba383 100644
--- a/generic/tclBinary.c
+++ b/generic/tclBinary.c
@@ -1796,7 +1796,15 @@ GetFormatSpec(
(*formatPtr)++;
*countPtr = BINARY_ALL;
} else if (isdigit(UCHAR(**formatPtr))) { /* INTL: digit */
- *countPtr = strtoul(*formatPtr, (char **) formatPtr, 10);
+ unsigned long int count;
+
+ errno = 0;
+ count = strtoul(*formatPtr, (char **) formatPtr, 10);
+ if (errno || (count > (unsigned long) INT_MAX)) {
+ *countPtr = INT_MAX;
+ } else {
+ *countPtr = (int) count;
+ }
} else {
*countPtr = BINARY_NOCOUNT;
}