Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/pynslcd
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2013-08-25 19:09:17 +0200
committerArthur de Jong <arthur@arthurdejong.org>2013-08-25 19:20:02 +0200
commit321d8a3574ca9165e882eae1035d4924d786af95 (patch)
treebee9ea8efba61e174e0cf8f77af082ea3c21c638 /pynslcd
parentf18729e714c291257181023d65c0393cd022ca85 (diff)
Handle failure of getpeercred more gracefully
Diffstat (limited to 'pynslcd')
-rwxr-xr-xpynslcd/pynslcd.py18
1 files changed, 9 insertions, 9 deletions
diff --git a/pynslcd/pynslcd.py b/pynslcd/pynslcd.py
index 5058d18..a5ae63b 100755
--- a/pynslcd/pynslcd.py
+++ b/pynslcd/pynslcd.py
@@ -178,10 +178,13 @@ def getpeercred(fd):
"""Return uid, gid and pid of calling application."""
import struct
import socket
- SO_PEERCRED = getattr(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
+ try:
+ SO_PEERCRED = getattr(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
+ except socket.error:
+ return None, None, None
handlers = {}
@@ -210,11 +213,8 @@ def acceptconnection(session):
# indicate new connection to logging module (generates unique id)
log_newsession()
# log connection
- try:
- uid, gid, pid = getpeercred(conn)
- logging.debug('connection from pid=%r uid=%r gid=%r', pid, uid, gid)
- except:
- raise # FIXME: handle exception gracefully
+ uid, gid, pid = getpeercred(conn)
+ logging.debug('connection from pid=%r uid=%r gid=%r', pid, uid, gid)
# create a stream object
fp = TIOStream(conn)
# read request