Skip to content

Commit

Permalink
[Fuzzing] Add fuzz testing
Browse files Browse the repository at this point in the history
Signed-off-by: Arjun Singh <[email protected]>
  • Loading branch information
0x34d committed Jul 21, 2023
1 parent 7778a1c commit 8e5d127
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 0 deletions.
6 changes: 6 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,12 @@ test:
quicktest:
go test ./...

fuzz:
go test -fuzz=FuzzParseDN -fuzztime=10s $(PWD)/
go test -fuzz=FuzzDecodeEscapedSymbols -fuzztime=10s $(PWD)/
go test -fuzz=FuzzEscapeFilter -fuzztime=10s $(PWD)/
go test -fuzz=FuzzEscapeDN -fuzztime=10s $(PWD)/

# Capture output and force failure when there is non-empty output
fmt:
@echo gofmt -l .
Expand Down
13 changes: 13 additions & 0 deletions dn_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -290,3 +290,16 @@ func TestDNAncestor(t *testing.T) {
}
}
}

func FuzzParseDN(f *testing.F) {

f.Add("*")
f.Add("cn=Jim\\0Test")
f.Add("cn=Jim\\0")
f.Add("DC=example,=net")
f.Add("o=a+o=B")

f.Fuzz(func(t *testing.T, input_data string) {
_, _ = ParseDN(input_data)
})
}
13 changes: 13 additions & 0 deletions filter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -289,3 +289,16 @@ func BenchmarkFilterDecompile(b *testing.B) {
_, _ = DecompileFilter(filters[i%maxIdx])
}
}

func FuzzDecodeEscapedSymbols(f *testing.F) {

f.Add([]byte("a\u0100\x80"))
f.Add([]byte(`start\d`))
f.Add([]byte(`\`))
f.Add([]byte(`start\--end`))
f.Add([]byte(`start\d0\hh`))

f.Fuzz(func(t *testing.T, input_data []byte) {
_, _ = decodeEscapedSymbols(input_data)
})
}
25 changes: 25 additions & 0 deletions ldap_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -410,3 +410,28 @@ func TestSearchAsyncAndCancel(t *testing.T) {
}
t.Logf("TestSearchAsyncAndCancel: %s -> num of entries = %d", searchRequest.Filter, len(srs))
}

func FuzzEscapeFilter(f *testing.F) {

f.Add("a\x00b(c)d*e\\f")
f.Add("Lučić")

f.Fuzz(func(t *testing.T, input_data string) {
_ = EscapeFilter(input_data)
})
}

func FuzzEscapeDN(f *testing.F) {

f.Add("test,user")
f.Add("#test#user#")
f.Add("\\test\\user\\")
f.Add(" test user ")
f.Add("\u0000te\x00st\x00user" + string(rune(0)))
f.Add("test\"+,;<>\\-_user")
f.Add("test\u0391user ")

f.Fuzz(func(t *testing.T, input_data string) {
_ = EscapeDN(input_data)
})
}

0 comments on commit 8e5d127

Please sign in to comment.