diff options
Diffstat (limited to 'go/src/nshd/nslcd_backend/db_shadow.go')
-rw-r--r-- | go/src/nshd/nslcd_backend/db_shadow.go | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/go/src/nshd/nslcd_backend/db_shadow.go b/go/src/nshd/nslcd_backend/db_shadow.go index ab1d68f..6cf6dbc 100644 --- a/go/src/nshd/nslcd_backend/db_shadow.go +++ b/go/src/nshd/nslcd_backend/db_shadow.go @@ -17,17 +17,24 @@ package nslcd_backend import ( + "context" + p "git.lukeshu.com/go/libnslcd/nslcd_proto" - s "golang.org/x/sys/unix" + "git.lukeshu.com/go/libnslcd/nslcd_server" ) -func (o *Hackers) Shadow_ByName(cred s.Ucred, req p.Request_Shadow_ByName) <-chan p.Shadow { +func (o *Hackers) Shadow_ByName(ctx context.Context, req p.Request_Shadow_ByName) <-chan p.Shadow { o.lock.RLock() ret := make(chan p.Shadow) go func() { defer o.lock.RUnlock() defer close(ret) + cred, ok := nslcd_server.PeerCredFromContext(ctx) + if !ok { + return + } + if cred.Uid != 0 { return } @@ -48,13 +55,18 @@ func (o *Hackers) Shadow_ByName(cred s.Ucred, req p.Request_Shadow_ByName) <-cha return ret } -func (o *Hackers) Shadow_All(cred s.Ucred, req p.Request_Shadow_All) <-chan p.Shadow { +func (o *Hackers) Shadow_All(ctx context.Context, req p.Request_Shadow_All) <-chan p.Shadow { o.lock.RLock() ret := make(chan p.Shadow) go func() { defer o.lock.RUnlock() defer close(ret) + cred, ok := nslcd_server.PeerCredFromContext(ctx) + if !ok { + return + } + if cred.Uid != 0 { return } |