Index: src/OFTarArchive.m ================================================================== --- src/OFTarArchive.m +++ src/OFTarArchive.m @@ -294,11 +294,11 @@ @throw [OFNotOpenException exceptionWithObject: self]; if (_atEndOfStream) return 0; - if (length > UINT64_MAX) + if (sizeof(length) >= sizeof(uint64_t) && length > UINT64_MAX) @throw [OFOutOfRangeException exception]; if ((uint64_t)length > _toRead) length = (size_t)_toRead; Index: src/OFZIPArchive.m ================================================================== --- src/OFZIPArchive.m +++ src/OFZIPArchive.m @@ -751,11 +751,11 @@ @throw [OFNotOpenException exceptionWithObject: self]; if (_atEndOfStream) return 0; - if (length > UINT64_MAX) + if (sizeof(length) >= sizeof(uint64_t) && length > UINT64_MAX) @throw [OFOutOfRangeException exception]; if ((uint64_t)length > _toRead) length = (size_t)_toRead; @@ -808,11 +808,12 @@ } - (void)lowlevelWriteBuffer: (const void *)buffer length: (size_t)length { - if (length > INT64_MAX || INT64_MAX - _bytesWritten < (int64_t)length) + if ((sizeof(length) >= sizeof(int64_t) && length > INT64_MAX) || + INT64_MAX - _bytesWritten < (int64_t)length) @throw [OFOutOfRangeException exception]; [_stream writeBuffer: buffer length: length];