diff options
author | Andreas Vögele <andreas@kurzegasse.de> | 2010-06-30 21:42:01 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2010-06-30 21:42:01 +0200 |
commit | 34415bf0b60738b22099023af5cd2cd1d202bf80 (patch) | |
tree | 6861c67dcf09d9cd8bd15a68492d9b5c38f0bf7a | |
parent | 0a0c78674f8ca6ffce08feabd7c292133fd2d86e (diff) | |
download | mpd-34415bf0b60738b22099023af5cd2cd1d202bf80.tar.gz mpd-34415bf0b60738b22099023af5cd2cd1d202bf80.tar.xz mpd-34415bf0b60738b22099023af5cd2cd1d202bf80.zip |
Make get_remote_uid() work on BSD
I've attached a patch that will make file URIs work on operating systems
that provide the getpeereid() function call to check the user ID of the
peer connected to a UNIX domain socket.
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | src/listen.c | 8 |
3 files changed, 9 insertions, 1 deletions
@@ -5,6 +5,7 @@ ver 0.15.11 (2010/??/??) - mp4ff: support tags "albumartist", "band" - mikmod: fix memory leak * playlist: emit IDLE_OPTIONS when resetting single mode +* listen: make get_remote_uid() work on BSD ver 0.15.10 (2010/05/30) diff --git a/configure.ac b/configure.ac index 9249ada70..1043b2f65 100644 --- a/configure.ac +++ b/configure.ac @@ -177,6 +177,7 @@ AC_ARG_ENABLE(un, if test x$enable_un = xyes; then AC_DEFINE(HAVE_UN, 1, [Define if unix domain socket support is enabled]) STRUCT_UCRED + AC_CHECK_FUNCS(getpeereid) fi diff --git a/src/listen.c b/src/listen.c index 98108d9da..d6cade855 100644 --- a/src/listen.c +++ b/src/listen.c @@ -407,7 +407,13 @@ static int get_remote_uid(int fd) return cred.uid; #else - (void)fd; +#ifdef HAVE_GETPEEREID + uid_t euid; + gid_t egid; + + if (getpeereid(fd, &euid, &egid) == 0) + return euid; +#endif return -1; #endif } |