diff -ur gnome-screensaver-2.22.2/src/setuid.c gnome-screensaver-2.22.2.new/src/setuid.c --- gnome-screensaver-2.22.2/src/setuid.c 2008-04-02 19:47:21 +0400 +++ gnome-screensaver-2.22.2.new/src/setuid.c 2008-07-10 18:53:59 +0400 @@ -75,14 +75,14 @@ errno = 0; if (setgroups (1, &gid) < 0) - sgs_errno = errno ? errno : -1; + /* sgs_errno = errno ? errno : -1*/; errno = 0; - if (setgid (gid) != 0) + if (setresgid (gid, gid, gid) != 0) gid_errno = errno ? errno : -1; errno = 0; - if (setuid (uid) != 0) + if (setresuid (uid, uid, uid) != 0) uid_errno = errno ? errno : -1; if (uid_errno == 0 && gid_errno == 0 && sgs_errno == 0) { @@ -195,7 +195,7 @@ } if (uid != euid || gid != egid) { - if (! set_ids_by_number (uid, gid, uid_message)) { + if (! set_ids_by_number (euid == 0 ? uid : euid, egid == 0 ? gid : egid, uid_message)) { reason = g_strdup ("unable to discard privileges."); ret = FALSE;