Merge pull request #26 from status-im/unsafememoryinput-empty-array-access

don't even notionally access element 0 of 0-length openArray
This commit is contained in:
tersec 2022-03-28 11:51:04 +00:00 • committed by GitHub
commit c80701f7d2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 4 additions and 4 deletions

View file

@ -11,7 +11,7 @@ type
startAddr*, endAddr*: ptr byte startAddr*, endAddr*: ptr byte
Page* = object Page* = object
consumedTo*: Natural consumedTo*: int
writtenTo*: Natural writtenTo*: Natural
data*: ref string data*: ref string

View file

@ -442,7 +442,7 @@ proc fileInput*(filename: string,
return fileInput(file, offset, pageSize) return fileInput(file, offset, pageSize)
proc unsafeMemoryInput*(mem: openArray[byte]): InputStreamHandle = proc unsafeMemoryInput*(mem: openArray[byte]): InputStreamHandle =
let head = unsafeAddr mem[0] let head = cast[ptr byte](mem)
makeHandle InputStream( makeHandle InputStream(
span: PageSpan( span: PageSpan(

View file

@ -121,7 +121,7 @@ proc base64decode*(i: InputStream, o: OutputStream) {.fsMultiSync.} =
inputChar(d) inputChar(d)
outputChar(c shl 6 or d shr 0) outputChar(c shl 6 or d shr 0)
elif i.readable: elif i.readable:
raise newException(ValueError, "The input stream has insufficient nymber of bytes for base64 decoding") raise newException(ValueError, "The input stream has insufficient number of bytes for base64 decoding")
close o close o

View file

@ -41,7 +41,7 @@ when fsAsyncSupport:
template timeit(timerVar: var Nanos, code: untyped) = template timeit(timerVar: var Nanos, code: untyped) =
let t0 = getTicks() let t0 = getTicks()
code code
timerVar = int(getTicks() - t0) div 1000000 timerVar = int64(getTicks() - t0) div 1000000
proc getOutput(sp: AsyncInputStream, T: type string): Future[string] {.async.} = proc getOutput(sp: AsyncInputStream, T: type string): Future[string] {.async.} =
# this proc is a quick hack to let the test pass # this proc is a quick hack to let the test pass