diff options
Diffstat (limited to 'guts/setreuid.c')
-rw-r--r-- | guts/setreuid.c | 27 |
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; + * } + */ |