summaryrefslogtreecommitdiffstats
path: root/sbin/ping
diff options
context:
space:
mode:
authoreadler <eadler@FreeBSD.org>2012-10-22 03:31:22 +0000
committereadler <eadler@FreeBSD.org>2012-10-22 03:31:22 +0000
commit4bc19b04c5658de751c40ddf1399ab0dd1d895e7 (patch)
tree3aa86a2f61ac3b57647e44878110dc60da9069e7 /sbin/ping
parentf4d42efdb90dc9f022d3764a5d1ddcfe4a846713 (diff)
downloadFreeBSD-src-4bc19b04c5658de751c40ddf1399ab0dd1d895e7.zip
FreeBSD-src-4bc19b04c5658de751c40ddf1399ab0dd1d895e7.tar.gz
Check the return error of set[ug]id. While this can never fail in the
current version of FreeBSD, this isn't guarenteed by the API. Custom security modules, or future implementations of the setuid and setgid may fail. PR: bin/172289 PR: bin/172290 PR: bin/172291 Submittud by: Erik Cederstrand <erik@cederstrand.dk> Discussed by: freebsd-security Approved by: cperciva MFC after: 1 week
Diffstat (limited to 'sbin/ping')
-rw-r--r--sbin/ping/ping.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sbin/ping/ping.c b/sbin/ping/ping.c
index f8f62d1..85d0348 100644
--- a/sbin/ping/ping.c
+++ b/sbin/ping/ping.c
@@ -255,7 +255,8 @@ main(int argc, char *const *argv)
s = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
sockerrno = errno;
- setuid(getuid());
+ if (setuid(getuid()) != 0)
+ err(EX_NOPERM, "setuid() failed");
uid = getuid();
alarmtimeout = df = preload = tos = 0;
OpenPOWER on IntegriCloud