From 5f3b126f3013cb78fa2e5a8beb935021e21d5c5d Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Mon, 14 Dec 2009 16:00:28 +0100 Subject: add paranoia checks on setuid/setgid Signed-off-by: Denys Vlasenko --- lib/Utils/xfuncs.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'lib/Utils/xfuncs.cpp') diff --git a/lib/Utils/xfuncs.cpp b/lib/Utils/xfuncs.cpp index 0e57639..8621b5f 100644 --- a/lib/Utils/xfuncs.cpp +++ b/lib/Utils/xfuncs.cpp @@ -362,6 +362,18 @@ bool string_to_bool(const char *s) return false; } +void xsetreuid(uid_t ruid, uid_t euid) +{ + if (setreuid(ruid, euid) != 0) + perror_msg_and_die("can't set %cid %d", 'u', (int)ruid); +} + +void xsetregid(gid_t rgid, uid_t egid) +{ + if (setregid(rgid, egid) != 0) + perror_msg_and_die("can't set %cid %d", 'g', (int)rgid); +} + uid_t getuidbyname(const char* login) { struct passwd* pwd = getpwnam(login); -- cgit