From e52a1f74a38cad3df083885aa8860a870a131cdb Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Tue, 11 Feb 2020 23:20:33 +0100 Subject: [PATCH] Handle search attribute * --- bottin.hcl.example | 2 +- main.go | 1 - read.go | 7 +++++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/bottin.hcl.example b/bottin.hcl.example index 3d977d4..8a3ad36 100644 --- a/bottin.hcl.example +++ b/bottin.hcl.example @@ -12,7 +12,7 @@ job "directory" { task "server" { driver = "docker" config { - image = "lxpz/bottin_amd64:8" + image = "lxpz/bottin_amd64:10" readonly_rootfs = true port_map { ldap_port = 389 diff --git a/main.go b/main.go index 975311d..9267175 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,5 @@ package main - import ( "crypto/rand" "crypto/tls" diff --git a/read.go b/read.go index ab80d1c..43833e8 100644 --- a/read.go +++ b/read.go @@ -124,7 +124,7 @@ func (server *Server) handleSearchInternal(state *State, w ldap.ResponseWriter, } } else if r.Scope() == message.SearchRequestSingleLevel { objectLevel := len(strings.Split(dn, ",")) - if objectLevel != baseObjectLevel + 1 { + if objectLevel != baseObjectLevel+1 { continue } } @@ -148,7 +148,10 @@ func (server *Server) handleSearchInternal(state *State, w ldap.ResponseWriter, if len(r.Attributes()) > 0 { found := false for _, requested := range r.Attributes() { - if strings.EqualFold(string(requested), attr) { + if string(requested) == "1.1" && len(r.Attributes()) == 1 { + break + } + if string(requested) == "*" || strings.EqualFold(string(requested), attr) { found = true break }