diff options
author | Joerg Sonnenberger <joerg.sonnenberger@gmail.com> | 2010-12-04 19:54:03 -0500 |
---|---|---|
committer | Joerg Sonnenberger <joerg.sonnenberger@gmail.com> | 2010-12-04 19:54:03 -0500 |
commit | 88d19ea4442c6b9cd5c74777d31facb9d764437e (patch) | |
tree | 653679cd1923bdc5add92bd54302724c16ec8afd /libarchive/archive_acl.c | |
parent | b01b4bc181a03a0f92b5b0f02c1e3b51d1b0c285 (diff) | |
download | libarchive-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.c | 5 |
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'; } |