mirror of
https://github.com/LBRYFoundation/tracker.git
synced 2025-08-27 15:31:32 +00:00
Merge pull request #64 from chihaya/fix-blank-query-param-panic
Fix panic occurring when blank query params are present
This commit is contained in:
commit
8502867d94
2 changed files with 15 additions and 9 deletions
|
@ -36,16 +36,15 @@ func New(query string) (*Query, error) {
|
||||||
|
|
||||||
for i, length := 0, len(query); i < length; i++ {
|
for i, length := 0, len(query); i < length; i++ {
|
||||||
separator := query[i] == '&' || query[i] == ';' || query[i] == '?'
|
separator := query[i] == '&' || query[i] == ';' || query[i] == '?'
|
||||||
if separator || i == length-1 {
|
last := i == length-1
|
||||||
if onKey {
|
|
||||||
|
if separator || last {
|
||||||
|
if onKey && !last {
|
||||||
keyStart = i + 1
|
keyStart = i + 1
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if i == length-1 && !separator {
|
if last && !separator && !onKey {
|
||||||
if query[i] == '=' {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
valEnd = i
|
valEnd = i
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,9 +53,13 @@ func New(query string) (*Query, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
valStr, err := url.QueryUnescape(query[valStart : valEnd+1])
|
var valStr string
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
if valEnd > 0 {
|
||||||
|
valStr, err = url.QueryUnescape(query[valStart : valEnd+1])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
q.Params[strings.ToLower(keyStr)] = valStr
|
q.Params[strings.ToLower(keyStr)] = valStr
|
||||||
|
@ -74,12 +77,14 @@ func New(query string) (*Query, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
valEnd = 0
|
||||||
onKey = true
|
onKey = true
|
||||||
keyStart = i + 1
|
keyStart = i + 1
|
||||||
|
|
||||||
} else if query[i] == '=' {
|
} else if query[i] == '=' {
|
||||||
onKey = false
|
onKey = false
|
||||||
valStart = i + 1
|
valStart = i + 1
|
||||||
|
valEnd = 0
|
||||||
} else if onKey {
|
} else if onKey {
|
||||||
keyEnd = i
|
keyEnd = i
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -26,6 +26,7 @@ var (
|
||||||
url.Values{"info_hash": {testInfoHash}, "peer_id": {testPeerID}, "port": {"6881"}, "downloaded": {"1234"}, "left": {"4321"}, "compact": {"0"}, "no_peer_id": {"1"}, "key": {"peerKey"}, "trackerid": {"trackerId"}},
|
url.Values{"info_hash": {testInfoHash}, "peer_id": {testPeerID}, "port": {"6881"}, "downloaded": {"1234"}, "left": {"4321"}, "compact": {"0"}, "no_peer_id": {"1"}, "key": {"peerKey"}, "trackerid": {"trackerId"}},
|
||||||
url.Values{"info_hash": {testInfoHash}, "peer_id": {"%3Ckey%3A+0x90%3E"}, "port": {"6881"}, "downloaded": {"1234"}, "left": {"4321"}, "compact": {"0"}, "no_peer_id": {"1"}, "key": {"peerKey"}, "trackerid": {"trackerId"}},
|
url.Values{"info_hash": {testInfoHash}, "peer_id": {"%3Ckey%3A+0x90%3E"}, "port": {"6881"}, "downloaded": {"1234"}, "left": {"4321"}, "compact": {"0"}, "no_peer_id": {"1"}, "key": {"peerKey"}, "trackerid": {"trackerId"}},
|
||||||
url.Values{"info_hash": {testInfoHash}, "peer_id": {"%3Ckey%3A+0x90%3E"}, "compact": {"1"}},
|
url.Values{"info_hash": {testInfoHash}, "peer_id": {"%3Ckey%3A+0x90%3E"}, "compact": {"1"}},
|
||||||
|
url.Values{"info_hash": {""}, "peer_id": {""}, "compact": {""}},
|
||||||
}
|
}
|
||||||
|
|
||||||
InvalidQueries = []string{
|
InvalidQueries = []string{
|
||||||
|
|
Loading…
Add table
Reference in a new issue