commit 479a620ee8d3351e07d1bc86bec3f1107c04cc69 Author: Damian Johnson atagar@torproject.org Date: Thu Jan 12 09:17:20 2012 -0800
Making lsof cwd checks account for permissions
With the anti-debugger tor change the /proc/<pid>/cwd symlink becomes only readable by root. This causes lsof queries for a process' cwd to return the proc path with a message saying that permission is denied, and the sys tools misparsed that as meaning that the cwd _was_ the proc path. --- stem/util/system.py | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/stem/util/system.py b/stem/util/system.py index 8eced97..f58f698 100644 --- a/stem/util/system.py +++ b/stem/util/system.py @@ -451,7 +451,13 @@ def get_cwd(pid): results = call(GET_CWD_LSOF % pid)
if results and len(results) == 2 and results[1].startswith("n/"): - return results[1][1:].strip() + lsof_result = results[1][1:].strip() + + # If we lack read permissions for the cwd then it returns... + # p2683 + # n/proc/2683/cwd (readlink: Permission denied) + + if not " " in lsof_result: return lsof_result else: log.debug("%s we got unexpected output from lsof: %s" % (logging_prefix, results))