Skip to content

Commit

Permalink
Avoid casting offsets to Int when reading ranges
Browse files Browse the repository at this point in the history
This results in overflow in Integer math for files larger than 2G
  • Loading branch information
echeipesh committed May 9, 2018
1 parent 8ea262e commit 3b8d502
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions util/src/main/scala/geotrellis/util/StreamingByteReader.scala
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,9 @@ class StreamingByteReader(rangeReader: RangeReader, chunkSize: Int = 45876) exte

/** Ensure we can read given number of bytes from current filePosition */
private def ensureChunk(length: Int): Unit = {
val trimmed = math.min(length, (rangeReader.totalLength - filePosition).toInt)
val trimmed: Long = math.min(length.toLong, rangeReader.totalLength - filePosition)
if (!chunkRange.contains(filePosition) || !chunkRange.contains(filePosition + trimmed - 1)) {
val len = math.min(math.max(length, chunkSize), (rangeReader.totalLength - filePosition).toInt)
val len: Long = math.min(math.max(length, chunkSize), rangeReader.totalLength - filePosition)
readChunk(filePosition to (filePosition + len - 1))
}

Expand Down

0 comments on commit 3b8d502

Please sign in to comment.