Index: squid-3.2.3/src/icmp/pinger.cc =================================================================== --- squid-3.2.3.orig/src/icmp/pinger.cc +++ squid-3.2.3/src/icmp/pinger.cc @@ -180,8 +180,18 @@ main(int argc, char *argv[]) } max_fd = max(max_fd, squid_link); - setgid(getgid()); - setuid(getuid()); + if (setgid(getgid()) < 0) { + debugs(42, 0, "FATAL: pinger: setgid failed."); + icmp4.Close(); + icmp6.Close(); + exit (1); + } + if (setuid(getuid()) < 0) { + debugs(42, 0, "FATAL: pinger: setuid failed."); + icmp4.Close(); + icmp6.Close(); + exit (1); + } last_check_time = squid_curtime; Index: squid-3.2.3/src/tools.cc =================================================================== --- squid-3.2.3.orig/src/tools.cc +++ squid-3.2.3/src/tools.cc @@ -757,7 +757,8 @@ enter_suid(void) debugs(21, 3, "enter_suid: PID " << getpid() << " taking root priveleges"); #if HAVE_SETRESUID - setresuid((uid_t)-1, 0, (uid_t)-1); + if (setresuid((uid_t)-1, 0, (uid_t)-1) < 0) + debugs (21, 3, "enter_suid: setresuid failed" << xstrerror ()); #else setuid(0); @@ -782,7 +783,8 @@ no_suid(void) uid = geteuid(); debugs(21, 3, "no_suid: PID " << getpid() << " giving up root priveleges forever"); - setuid(0); + if (setuid(0) < 0) + debugs(50, 1, "no_suid: setuid (0): " << xstrerror()); if (setuid(uid) < 0) debugs(50, 1, "no_suid: setuid: " << xstrerror());