Added fix for handling TaintedStrings in streams and httpclient (#12969)
* Added fix for taint mode in streams and httpclient * Removed taintMode export from system.nim
This commit is contained in:
parent
ee9ee297d8
commit
441cacf70f
2 changed files with 14 additions and 6 deletions
|
|
@ -367,7 +367,7 @@ proc addFiles*(p: var MultipartData, xs: openArray[tuple[name, file: string]]):
|
|||
let (_, fName, ext) = splitFile(file)
|
||||
if ext.len > 0:
|
||||
contentType = m.getMimetype(ext[1..ext.high], "")
|
||||
p.add(name, readFile(file), fName & ext, contentType)
|
||||
p.add(name, readFile(file).string, fName & ext, contentType)
|
||||
result = p
|
||||
|
||||
proc `[]=`*(p: var MultipartData, name, content: string) =
|
||||
|
|
@ -634,7 +634,7 @@ proc parseChunks(client: HttpClient | AsyncHttpClient): Future[void]
|
|||
{.multisync.} =
|
||||
while true:
|
||||
var chunkSize = 0
|
||||
var chunkSizeStr = await client.socket.recvLine()
|
||||
var chunkSizeStr = (await client.socket.recvLine()).string
|
||||
var i = 0
|
||||
if chunkSizeStr == "":
|
||||
httpError("Server terminated connection prematurely")
|
||||
|
|
@ -734,9 +734,9 @@ proc parseResponse(client: HttpClient | AsyncHttpClient,
|
|||
while true:
|
||||
linei = 0
|
||||
when client is HttpClient:
|
||||
line = await client.socket.recvLine(client.timeout)
|
||||
line = (await client.socket.recvLine(client.timeout)).string
|
||||
else:
|
||||
line = await client.socket.recvLine()
|
||||
line = (await client.socket.recvLine()).string
|
||||
if line == "":
|
||||
# We've been disconnected.
|
||||
client.close()
|
||||
|
|
|
|||
|
|
@ -96,6 +96,8 @@
|
|||
|
||||
include "system/inclrtl"
|
||||
|
||||
const taintMode = compileOption("taintmode")
|
||||
|
||||
proc newEIO(msg: string): owned(ref IOError) =
|
||||
new(result)
|
||||
result.msg = msg
|
||||
|
|
@ -901,7 +903,10 @@ proc readLine*(s: Stream, line: var TaintedString): bool =
|
|||
else:
|
||||
# fallback
|
||||
when nimvm: #Bug #12282
|
||||
line.setLen(0)
|
||||
when taintMode:
|
||||
line.string.setLen(0)
|
||||
else:
|
||||
line.setLen(0)
|
||||
else:
|
||||
line.string.setLen(0)
|
||||
while true:
|
||||
|
|
@ -914,7 +919,10 @@ proc readLine*(s: Stream, line: var TaintedString): bool =
|
|||
if line.len > 0: break
|
||||
else: return false
|
||||
when nimvm: #Bug #12282
|
||||
line.add(c)
|
||||
when taintMode:
|
||||
line.string.add(c)
|
||||
else:
|
||||
line.add(c)
|
||||
else:
|
||||
line.string.add(c)
|
||||
result = true
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue