aboutsummaryrefslogtreecommitdiff
path: root/src/wydawca.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2009-02-23 00:41:54 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2009-02-23 00:41:54 +0200
commit7543ff5973d1afe75b0f4226a3a02cc8d375ad3e (patch)
tree27a8b45adacc99d929c12679512d9e8adf9b5500 /src/wydawca.c
parentcc980787791b10c2a8e95e07d40973861e00a8d9 (diff)
downloadwydawca-7543ff5973d1afe75b0f4226a3a02cc8d375ad3e.tar.gz
wydawca-7543ff5973d1afe75b0f4226a3a02cc8d375ad3e.tar.bz2
Switch to user privileges while processing the triplet
Diffstat (limited to 'src/wydawca.c')
-rw-r--r--src/wydawca.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/wydawca.c b/src/wydawca.c
index 2eb8fa2..aeb56bf 100644
--- a/src/wydawca.c
+++ b/src/wydawca.c
@@ -282,6 +282,29 @@ match_uid_p (uid_t uid)
}
+int
+wydawca_uid (uid_t uid)
+{
+ int rc;
+
+ if (getuid () != 0)
+ return 0;
+#if defined(HAVE_SETREUID)
+ rc = setreuid (0, uid);
+#elif defined(HAVE_SETRESUID)
+ rc = setresuid (-1, uid, -1);
+#elif defined(HAVE_SETEUID)
+ rc = seteuid (uid);
+#else
+# error "No way to reset user privileges?"
+#endif
+ if (rc < 0)
+ logmsg (LOG_ERR, "cannot switch to UID %d: %s (r=%d, e=%d)",
+ uid, strerror (errno), getuid (), geteuid ());
+ return rc;
+}
+
+
#include "cmdline.h"
int

Return to:

Send suggestions and report system problems to the System administrator.