Check empty ldap attributes value

fixes #11986

Signed-off-by: stonezdj <stonezdj@gmail.com>
This commit is contained in:
stonezdj 2021-10-25 11:20:40 +08:00
parent bc6a7f65a6
commit ec23ddabc3

View File

@ -154,6 +154,9 @@ func (s *Session) SearchUser(username string) ([]model.User, error) {
groupDNList := make([]string, 0) groupDNList := make([]string, 0)
groupAttr := strings.ToLower(s.groupCfg.MembershipAttribute) groupAttr := strings.ToLower(s.groupCfg.MembershipAttribute)
for _, attr := range ldapEntry.Attributes { for _, attr := range ldapEntry.Attributes {
if attr == nil || len(attr.Values) == 0 {
continue
}
// OpenLdap sometimes contain leading space in username // OpenLdap sometimes contain leading space in username
val := strings.TrimSpace(attr.Values[0]) val := strings.TrimSpace(attr.Values[0])
log.Debugf("Current ldap entry attr name: %s\n", attr.Name) log.Debugf("Current ldap entry attr name: %s\n", attr.Name)
@ -374,7 +377,9 @@ func (s *Session) searchGroup(groupDN, filter, gName, groupNameAttribute string)
return ldapGroups, nil return ldapGroups, nil
} }
groupName := "" groupName := ""
if len(result.Entries[0].Attributes) > 0 { if len(result.Entries[0].Attributes) > 0 &&
result.Entries[0].Attributes[0] != nil &&
len(result.Entries[0].Attributes[0].Values) > 0 {
groupName = result.Entries[0].Attributes[0].Values[0] groupName = result.Entries[0].Attributes[0].Values[0]
} else { } else {
groupName = groupDN groupName = groupDN