aboutsummaryrefslogtreecommitdiffstats
path: root/guts/setreuid.c
diff options
context:
space:
mode:
Diffstat (limited to 'guts/setreuid.c')
-rw-r--r--guts/setreuid.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/guts/setreuid.c b/guts/setreuid.c
new file mode 100644
index 0000000..3669581
--- /dev/null
+++ b/guts/setreuid.c
@@ -0,0 +1,27 @@
+/*
+ * static int
+ * wrap_setreuid(uid_t ruid, uid_t euid) {
+ * int rc = -1;
+ */
+ rc = 0;
+ if (pseudo_euid != 0 && ruid != -1 &&
+ ruid != pseudo_euid && ruid != pseudo_ruid && ruid != pseudo_suid) {
+ rc = -1;
+ errno = EPERM;
+ }
+ if (pseudo_euid != 0 && euid != -1 &&
+ euid != pseudo_euid && euid != pseudo_ruid && euid != pseudo_suid) {
+ rc = -1;
+ errno = EPERM;
+ }
+ if (rc != -1) {
+ if (ruid != -1)
+ pseudo_ruid = ruid;
+ if (euid != -1)
+ pseudo_euid = euid;
+ pseudo_fuid = pseudo_euid;
+ pseudo_client_touchuid();
+ }
+/* return rc;
+ * }
+ */