summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-12-29 14:18:19 +0100
committerMax Kellermann <max@duempel.org>2013-12-29 14:18:19 +0100
commit92a4bf4441b239e44067ab4f5785fec27d651b22 (patch)
tree9e9a61ff136013175cd5f73e81b9be86f913a014
parent5465647c2e2ac71b932f1268a83a00b36fdada82 (diff)
parentd7f80eab68b5cb0d2aa90e67fa2bb04b1bbef975 (diff)
Merge branch 'v0.18.x'
-rw-r--r--NEWS6
-rw-r--r--configure.ac2
-rw-r--r--src/Daemon.cxx19
3 files changed, 18 insertions, 9 deletions
diff --git a/NEWS b/NEWS
index aadd8a4fe..b7923e0dd 100644
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,12 @@ ver 0.19 (not yet released)
- volume: improved software volume dithering
* new resampler option using libsoxr
+ver 0.18.7 (not yet released)
+* playlist
+ - soundcloud: fix build failure with libyajl 2.0.1
+* daemon: don't initialize supplementary groups when already running
+ as the configured user
+
ver 0.18.6 (2013/12/24)
* input
- cdio_paranoia: support libcdio-paranoia 0.90
diff --git a/configure.ac b/configure.ac
index ac60e72c8..eb63735ce 100644
--- a/configure.ac
+++ b/configure.ac
@@ -852,7 +852,7 @@ dnl --------------------------------- Soundcloud ------------------------------
if test x$enable_soundcloud != xno; then
PKG_CHECK_MODULES([YAJL], [yajl >= 2.0],
[found_soundcloud=yes],
- AC_CHECK_LIB([yajl], [yajl_alloc],
+ AC_CHECK_LIB([yajl], [yajl_parse_complete],
[found_soundcloud=yes YAJL_CFLAGS=-DHAVE_YAJL1 YAJL_LIBS=-lyajl],
[found_soundcloud=no]))
fi
diff --git a/src/Daemon.cxx b/src/Daemon.cxx
index 6fc0f2d7c..0a4eea841 100644
--- a/src/Daemon.cxx
+++ b/src/Daemon.cxx
@@ -47,7 +47,7 @@ static char *user_name;
static uid_t user_uid = (uid_t)-1;
/** the Unix group id which MPD runs as */
-static gid_t user_gid = (pid_t)-1;
+static gid_t user_gid = (gid_t)-1;
/** the absolute path of the pidfile */
static AllocatedPath pidfile = AllocatedPath::Null();
@@ -101,18 +101,21 @@ daemonize_set_user(void)
return;
/* set gid */
- if (user_gid != (gid_t)-1 && user_gid != getgid()) {
- if (setgid(user_gid) == -1) {
- FormatFatalSystemError("Failed to set group %d",
- (int)user_gid);
- }
+ if (user_gid != (gid_t)-1 && user_gid != getgid() &&
+ setgid(user_gid) == -1) {
+ FormatFatalSystemError("Failed to set group %d",
+ (int)user_gid);
}
#ifdef _BSD_SOURCE
- /* init suplementary groups
+ /* init supplementary groups
* (must be done before we change our uid)
*/
- if (!had_group && initgroups(user_name, user_gid) == -1) {
+ if (!had_group &&
+ /* no need to set the new user's supplementary groups if
+ we are already this user */
+ user_uid != getuid() &&
+ initgroups(user_name, user_gid) == -1) {
FormatFatalSystemError("Failed to set supplementary groups "
"of user \"%s\"",
user_name);