]> git.ipfire.org Git - thirdparty/squid.git/commit
pinger: drop capabilities on Linux
authorYuriy M. Kaminskiy <yumkam@gmail.com>
Fri, 1 Apr 2016 20:38:29 +0000 (09:38 +1300)
committerAmos Jeffries <squid3@treenet.co.nz>
Fri, 1 Apr 2016 20:38:29 +0000 (09:38 +1300)
commit261f5e993c412394ab54eb59fa24b730835189b0
tree2ae29c65adf35349ec35a8d09243364ec1b19589
parent2441bc77219d419926fae2982fac654e1efac1ce
pinger: drop capabilities on Linux

On linux, it is possible to install pinger helper with only CAP_NET_RAW
raised instead of full setuid-root:

 (setcap cap_net_raw+ep /path/to/pinger && chmod u-s /path/to/pinger) || :

However, pinger only drops setuid/setgid, and won't drop capabilities
after sockets are opened (when it is setuid-root, setuid(getuid()) also
drops capabilities, no code changes necessary; however, if it is only
setcap'ed, setuid() is no-op).

Fix is minimally tested, seems to work fine with both/either `setcap`
and `chmod u+s`; non-linux/non-libcap configurations should not be
affected).

* Also fixes errno debug outputs.
src/icmp/pinger.cc