mirror of
https://github.com/aler9/gortsplib
synced 2025-10-05 15:16:51 +08:00
fix infinite loop when parsing specially-crafted headers (#521)
This commit is contained in:
@@ -49,7 +49,6 @@ func keyValParse(str string, separator byte) (map[string]string, error) {
|
|||||||
var k string
|
var k string
|
||||||
k, str = readKey(str, separator)
|
k, str = readKey(str, separator)
|
||||||
|
|
||||||
if len(k) > 0 {
|
|
||||||
if len(str) > 0 && str[0] == '=' {
|
if len(str) > 0 && str[0] == '=' {
|
||||||
var v string
|
var v string
|
||||||
var err error
|
var err error
|
||||||
@@ -62,7 +61,6 @@ func keyValParse(str string, separator byte) (map[string]string, error) {
|
|||||||
} else {
|
} else {
|
||||||
ret[k] = ""
|
ret[k] = ""
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// skip separator
|
// skip separator
|
||||||
if len(str) > 0 && str[0] == separator {
|
if len(str) > 0 && str[0] == separator {
|
||||||
|
@@ -85,21 +85,8 @@ func TestKeyValParse(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestKeyValParseErrors(t *testing.T) {
|
func FuzzKeyValParse(f *testing.F) {
|
||||||
for _, ca := range []struct {
|
f.Fuzz(func(t *testing.T, b string) {
|
||||||
name string
|
keyValParse(b, ',') //nolint:errcheck
|
||||||
s string
|
|
||||||
err string
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
"apexes not closed",
|
|
||||||
`key1="v,1`,
|
|
||||||
"apexes not closed (key1=\"v,1)",
|
|
||||||
},
|
|
||||||
} {
|
|
||||||
t.Run(ca.name, func(t *testing.T) {
|
|
||||||
_, err := keyValParse(ca.s, ',')
|
|
||||||
require.EqualError(t, err, ca.err)
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
2
pkg/headers/testdata/fuzz/FuzzKeyValParse/15422aae47040b82
vendored
Normal file
2
pkg/headers/testdata/fuzz/FuzzKeyValParse/15422aae47040b82
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("=\"")
|
2
pkg/headers/testdata/fuzz/FuzzKeyValParse/32a837cd12bd2cfa
vendored
Normal file
2
pkg/headers/testdata/fuzz/FuzzKeyValParse/32a837cd12bd2cfa
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
go test fuzz v1
|
||||||
|
string("=\x84")
|
Reference in New Issue
Block a user