]> err.no Git - dpkg/commitdiff
s-s-d: Fix segfault when using --group w/o --chuid
authorGuillem Jover <guillem@debian.org>
Tue, 22 Jan 2008 19:43:35 +0000 (21:43 +0200)
committerGuillem Jover <guillem@debian.org>
Tue, 22 Jan 2008 19:43:35 +0000 (21:43 +0200)
As a side effect, using --group alone works for the first time in years.
Closes: #462072
ChangeLog
debian/changelog
utils/start-stop-daemon.c

index 245df37c0403b96870cdeb183e53198785c2b313..c9ca1a80bfe1e9e1d79ed4b08d0b21849014dfe3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-01-22  Guillem Jover  <guillem@debian.org>
+
+       * utils/start-stop-daemon.c (main): Only call initgroups if changeuser
+       is not NULL.
+
 2008-01-22  Guillem Jover  <guillem@debian.org>
 
        * utils/start-stop-daemon.c (gid_in_current_groups): Remove function.
index dbea147a7bfa577fd67669a15562c2fa5da95d3d..6e689a4410c96010cd8c914329976e8bac9cfb78 100644 (file)
@@ -8,6 +8,9 @@ dpkg (1.14.16.3) UNRELEASED; urgency=low
   [ Guillem Jover ]
   * Make start-stop-daemon set the supplementary groups if the real user or
     group are different than the ones we should switch to. Closes: #462075
+  * Fix segfault in start-stop-daemon when using --group w/o --chuid (as
+    a side effect, using --group alone works for the first time in years).
+    Closes: #462072
 
  -- Raphael Hertzog <hertzog@debian.org>  Tue, 22 Jan 2008 18:15:42 +0100
 
index a59e24095ed510facc14dcc92737f7fde1093eaa..ef9b4170e4eb9c9cd4bdcee353e0f7426a884749 100644 (file)
@@ -1400,7 +1400,8 @@ main(int argc, char **argv)
                if (rgid != (gid_t)runas_gid)
                        if (setgid(runas_gid))
                                fatal("Unable to set gid to %d", runas_gid);
-
+       }
+       if (changeuser != NULL) {
                /* We assume that if our real user and group are the same as
                 * the ones we should switch to, the supplementary groups
                 * will be already in place. */
@@ -1408,8 +1409,7 @@ main(int argc, char **argv)
                        if (initgroups(changeuser, runas_gid))
                                fatal("Unable to set initgroups() with gid %d",
                                      runas_gid);
-       }
-       if (changeuser != NULL) {
+
                if (ruid != (uid_t)runas_uid)
                        if (setuid(runas_uid))
                                fatal("Unable to set uid to %s", changeuser);