From a67f3bfa1eb898a35dff5c5a834de6432999b862 Mon Sep 17 00:00:00 2001 From: Arthur de Jong Date: Fri, 16 Mar 2012 12:48:28 +0000 Subject: implement a getpeercred() function git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-pam-ldapd@1640 ef36b2f9-881f-0410-afb5-c4e39611909c --- pynslcd/pynslcd.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'pynslcd') diff --git a/pynslcd/pynslcd.py b/pynslcd/pynslcd.py index 7cd8209..a053ad5 100755 --- a/pynslcd/pynslcd.py +++ b/pynslcd/pynslcd.py @@ -169,8 +169,13 @@ def log_newsession(): def getpeercred(fd): - return (None, None, None) - # FIXME: implement and return uid, gid, pid + """Return uid, gid and pid of calling application.""" + import struct + import socket + SO_PEERCRED = 17 + creds = fd.getsockopt(socket.SOL_SOCKET, SO_PEERCRED, struct.calcsize('3i')) + pid, uid, gid = struct.unpack('3i',creds) + return uid, gid, pid handlers = {} -- cgit v1.2.3