diff options
author | Martin Matuška <martin@matuska.org> | 2021-07-18 00:49:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-18 00:49:43 +0200 |
commit | 81fa2bf8e95af070924b414ae0165e11e89123ff (patch) | |
tree | d18e39dd9b88f554acdc70ebe3de363ad8a670ea /libarchive/archive_read_support_format_tar.c | |
parent | e5a38a890662a38c1b23223edda76c4de65bbccd (diff) | |
parent | f2b582881d622db623ae2700008225fd1a007663 (diff) | |
download | libarchive-81fa2bf8e95af070924b414ae0165e11e89123ff.tar.gz |
Merge pull request #1542 from ferivoz/intmax
Handle all negative int64_t values in mtree/tar
Diffstat (limited to 'libarchive/archive_read_support_format_tar.c')
-rw-r--r-- | libarchive/archive_read_support_format_tar.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libarchive/archive_read_support_format_tar.c b/libarchive/archive_read_support_format_tar.c index 9a32562d..7e8febac 100644 --- a/libarchive/archive_read_support_format_tar.c +++ b/libarchive/archive_read_support_format_tar.c @@ -2643,14 +2643,14 @@ tar_atol_base_n(const char *p, size_t char_cnt, int base) maxval = INT64_MIN; limit = -(INT64_MIN / base); - last_digit_limit = INT64_MIN % base; + last_digit_limit = -(INT64_MIN % base); } l = 0; if (char_cnt != 0) { digit = *p - '0'; while (digit >= 0 && digit < base && char_cnt != 0) { - if (l>limit || (l == limit && digit > last_digit_limit)) { + if (l>limit || (l == limit && digit >= last_digit_limit)) { return maxval; /* Truncate on overflow. */ } l = (l * base) + digit; |