Quick fix for using withReadableRange with unsafe inputs

This commit is contained in:
Zahary Karadjov 2020-05-25 03:57:18 +03:00
commit 0ca39dcd33
No known key found for this signature in database
GPG key ID: C8936F8A3073D609

View file

@ -300,6 +300,7 @@ proc limitReadableRange(s: InputStream, rangeLen: Natural): Natural =
let runway = s.span.len
if rangeLen > runway:
fsAssert s.buffers != nil
return s.buffers.setFauxEof(rangeLen - runway + s.spanEndPos)
else:
s.span.endAddr = offset(s.span.startAddr, rangeLen)
@ -307,7 +308,7 @@ proc limitReadableRange(s: InputStream, rangeLen: Natural): Natural =
s.spanEndPos -= bytesToUnconsume
if s.buffers != nil:
s.buffers.queue.peekFirst.consumedTo -= bytesToUnconsume
return s.buffers.setFauxEof(s.spanEndPos)
return s.buffers.setFauxEof(s.spanEndPos)
template withReadableRange*(sp: InputStream|AsyncInputStream,
rangeLen: Natural,