From: Andreas Jaeger Date: Sun, 18 Nov 2012 05:23:40 +0000 (-0700) Subject: Fix OpenSUSE glibc 2.17 compile issues X-Git-Tag: SQUID_3_4_0_1~488 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=77468ee555f93fb2d68c134da9b83877140e0785;p=thirdparty%2Fsquid.git Fix OpenSUSE glibc 2.17 compile issues --- diff --git a/src/icmp/pinger.cc b/src/icmp/pinger.cc index a9a25421f3..c5f7eaa5f3 100644 --- a/src/icmp/pinger.cc +++ b/src/icmp/pinger.cc @@ -179,8 +179,18 @@ main(int argc, char *argv[]) } max_fd = max(max_fd, squid_link); - setgid(getgid()); - setuid(getuid()); + if (setgid(getgid()) < 0) { + debugs(42, DBG_CRITICAL, "FATAL: pinger: setgid(" << getgid() << ") failed: " << xstrerror()); + icmp4.Close(); + icmp6.Close(); + exit (1); + } + if (setuid(getuid()) < 0) { + debugs(42, DBG_CRITICAL, "FATAL: pinger: setuid(" << getuid() << ") failed: " << xstrerror()); + icmp4.Close(); + icmp6.Close(); + exit (1); + } last_check_time = squid_curtime; diff --git a/src/tools.cc b/src/tools.cc index d8443d6b58..b1f80a64e1 100644 --- a/src/tools.cc +++ b/src/tools.cc @@ -703,10 +703,10 @@ leave_suid(void) void enter_suid(void) { - debugs(21, 3, "enter_suid: PID " << getpid() << " taking root priveleges"); + debugs(21, 3, "enter_suid: PID " << getpid() << " taking root privileges"); #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); @@ -731,10 +731,11 @@ 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, DBG_IMPORTANT, "WARNING: no_suid: setuid(0): " << xstrerror()); if (setuid(uid) < 0) - debugs(50, DBG_IMPORTANT, "no_suid: setuid: " << xstrerror()); + debugs(50, DBG_IMPORTANT, "ERROR: no_suid: setuid(" << uid << "): " << xstrerror()); restoreCapabilities(0);