This commit is contained in:
Andreas Rumpf 2020-09-20 01:07:13 +02:00 • committed by GitHub
commit ebb632ccba
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 3 deletions

View file

@ -105,9 +105,9 @@ iterator decodeData*(data: string): tuple[key, value: TaintedString] =
while i < data.len: while i < data.len:
setLen(name, 0) # reuse memory setLen(name, 0) # reuse memory
i = parseData(data, i, name) i = parseData(data, i, name)
if i >= data.len or data[i] != '=': cgiError("'=' expected")
inc(i) # skip '='
setLen(value, 0) # reuse memory setLen(value, 0) # reuse memory
if i < data.len and data[i] == '=':
inc(i) # skip '='
i = parseData(data, i, value) i = parseData(data, i, value)
yield (name.TaintedString, value.TaintedString) yield (name.TaintedString, value.TaintedString)
if i < data.len: if i < data.len:

View file

@ -1,6 +1,14 @@
discard """ discard """
output: ''' output: '''
[Suite] Test cgi module [Suite] Test cgi module
(key: "a", value: "1")
(key: "b", value: "0")
(key: "c", value: "3")
(key: "d", value: "")
(key: "e", value: "")
(key: "a", value: "5")
(key: "a", value: "t e x t")
(key: "e", value: "http://w3schools.com/my test.asp?name=ståle&car=saab")
''' '''
""" """
@ -21,3 +29,9 @@ suite "Test cgi module":
expect KeyError: expect KeyError:
discard parsedQuery["not_existing_key"] discard parsedQuery["not_existing_key"]
# bug #15369
let queryString = "a=1&b=0&c=3&d&e&a=5&a=t%20e%20x%20t&e=http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab"
for pair in decodeData(queryString):
echo pair