50 lines
1.5 KiB
Diff
50 lines
1.5 KiB
Diff
|
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());
|