summaryrefslogtreecommitdiff
path: root/src/or/control.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2014-05-14 13:53:14 -0400
committerNick Mathewson <nickm@torproject.org>2014-05-14 13:53:14 -0400
commit9b4ac986cbe8867c24c8e77654a4b7e75f870738 (patch)
treea70f07445bda6a29d21a1cc8619b6cc748813919 /src/or/control.c
parente12af2adb0919d0de6d6ba44462d9255f63fca5b (diff)
downloadtor-9b4ac986cbe8867c24c8e77654a4b7e75f870738.tar.gz
tor-9b4ac986cbe8867c24c8e77654a4b7e75f870738.zip
Use tor_getpw{nam,uid} wrappers to fix bug 11946
When running with User set, we frequently try to look up our information in the user database (e.g., /etc/passwd). The seccomp2 sandbox setup doesn't let us open /etc/passwd, and probably shouldn't. To fix this, we have a pair of wrappers for getpwnam and getpwuid. When a real call to getpwnam or getpwuid fails, they fall back to a cached value, if the uid/gid matches. (Granting access to /etc/passwd isn't possible with the way we handle opening files through the sandbox. It's not desirable either.)
Diffstat (limited to 'src/or/control.c')
-rwxr-xr-xsrc/or/control.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/or/control.c b/src/or/control.c
index d571900ac3..2865d78329 100755
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -1492,7 +1492,7 @@ getinfo_helper_misc(control_connection_t *conn, const char *question,
*answer = tor_strdup("");
#else
int myUid = geteuid();
- struct passwd *myPwEntry = getpwuid(myUid);
+ const struct passwd *myPwEntry = tor_getpwuid(myUid);
if (myPwEntry) {
*answer = tor_strdup(myPwEntry->pw_name);