summaryrefslogtreecommitdiff
path: root/libarchive/archive_acl.c
diff options
context:
space:
mode:
authorJoerg Sonnenberger <joerg.sonnenberger@gmail.com>2010-12-04 19:54:03 -0500
committerJoerg Sonnenberger <joerg.sonnenberger@gmail.com>2010-12-04 19:54:03 -0500
commit88d19ea4442c6b9cd5c74777d31facb9d764437e (patch)
tree653679cd1923bdc5add92bd54302724c16ec8afd /libarchive/archive_acl.c
parentb01b4bc181a03a0f92b5b0f02c1e3b51d1b0c285 (diff)
downloadlibarchive-88d19ea4442c6b9cd5c74777d31facb9d764437e.tar.gz
Adjust cut-off condition to correctly return INT_MAX for large integers.
Found by Maksymilian Arciemowicz <cxib@securityreason.com>. SVN-Revision: 2810
Diffstat (limited to 'libarchive/archive_acl.c')
-rw-r--r--libarchive/archive_acl.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libarchive/archive_acl.c b/libarchive/archive_acl.c
index d4195480..54080b0e 100644
--- a/libarchive/archive_acl.c
+++ b/libarchive/archive_acl.c
@@ -626,9 +626,10 @@ isint_w(const wchar_t *start, const wchar_t *end, int *result)
while (start < end) {
if (*start < '0' || *start > '9')
return (0);
- if (n > (INT_MAX / 10))
+ if (n > (INT_MAX / 10) ||
+ (n == INT_MAX / 10 && (*start - '0') > INT_MAX % 10)) {
n = INT_MAX;
- else {
+ } else {
n *= 10;
n += *start - '0';
}