Skip to content

Commit 755d2c3

Browse files
authored
fix: potential underflow in index read calculation (#22)
1 parent 30fe521 commit 755d2c3

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

c/src/om_decoder.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -456,16 +456,16 @@ bool om_decoder_next_index_read(const OmDecoder_t* decoder, OmDecoder_indexRead_
456456

457457
const uint64_t readStart = (index_read->nextChunk.lowerBound - alignOffset) / lut_chunk_element_count * lut_chunk_length;
458458

459-
while (1) {
459+
while (true) {
460460
const uint64_t maxRead = io_size_max / lut_chunk_length * lut_chunk_element_count;
461461
const uint64_t nextChunkCount = index_read->nextChunk.upperBound - index_read->nextChunk.lowerBound;
462-
const uint64_t nextIncrement = max(1, min(maxRead-1, nextChunkCount - 1));
462+
const uint64_t nextIncrement = max(1, min(maxRead - 1, nextChunkCount - 1));
463463

464464
if (index_read->nextChunk.lowerBound + nextIncrement >= index_read->nextChunk.upperBound) {
465465
if (!_om_decoder_next_chunk_position(decoder, &index_read->nextChunk)) {
466466
break;
467467
}
468-
const uint64_t readEndNext = (index_read->nextChunk.lowerBound + endAlignOffset) / lut_chunk_element_count * lut_chunk_length;
468+
const uint64_t readEndNext = divide_rounded_up(index_read->nextChunk.lowerBound + endAlignOffset, lut_chunk_element_count) * lut_chunk_length;
469469
const uint64_t readStartNext = readEndNext - lut_chunk_length;
470470
const uint64_t readEndPrevious = chunkIndex / lut_chunk_element_count * lut_chunk_length;
471471

0 commit comments

Comments
 (0)