go-ldap / ldap

Basic LDAP v3 functionality for the GO programming language.
Other
2.19k stars 352 forks source link

Memory leak in ParseDN #487

Closed inteon closed 3 months ago

inteon commented 4 months ago

The following snippet causes unexpectedly high memory usage:

func BenchmarkParseSubject(b *testing.B) {
    for n := 0; n < b.N; n++ {
        _, err := ldap.ParseDN("DF=#6666666666665006838820013100000746939546349182108463491821809FBFFFFFFFFF")
        if err == nil {
            b.Fatal("expected error, but got none")
        }
    }
}

Run with:

go test -bench=. -benchmem .

Result:

goos: darwin
goarch: arm64
pkg: .
BenchmarkParseSubject-12              58          20398892 ns/op        1665740367 B/op       58 allocs/op