diff --git a/v3/extended.go b/v3/extended.go index 921238fe..08c8e891 100644 --- a/v3/extended.go +++ b/v3/extended.go @@ -76,15 +76,23 @@ func (l *Conn) Extended(er *ExtendedRequest) (*ExtendedResponse, error) { return nil, err } - if len(packet.Children[1].Children) < 4 { + if len(packet.Children[1].Children) < 3 { return nil, fmt.Errorf( - "ldap: malformed extended response: expected 4 children, got %d", + "ldap: malformed extended response: expected at least 3 children, got %d", len(packet.Children), ) } + var name string + + if len(packet.Children[1].Children) < 4 { + name = er.Name + } else { + name = packet.Children[1].Children[3].Data.String() + } + response := &ExtendedResponse{ - Name: packet.Children[1].Children[3].Data.String(), + Name: name, Controls: make([]Control, 0), }