--- src/setuid.c~ 2008-05-27 17:11:42.000000000 -0600 +++ src/setuid.c 2008-05-27 17:11:42.000000000 -0600 @@ -76,11 +76,11 @@ set_ids_by_number (uid_t uid, errno = 0; if (setgroups (1, &gid) < 0) sgs_errno = errno ? errno : -1; - +#if 0 errno = 0; if (setgid (gid) != 0) gid_errno = errno ? errno : -1; - +#endif errno = 0; if (setuid (uid) != 0) uid_errno = errno ? errno : -1; @@ -194,7 +194,7 @@ hack_uid (char **nolock_reason, *orig_uid = uid_gid_string (euid, egid); } - if (uid != euid || gid != egid) { + if (euid == (uid_t) 0 && (uid != euid || gid != egid)) { if (! set_ids_by_number (uid, gid, uid_message)) { reason = g_strdup ("unable to discard privileges.");