1#define _GNU_SOURCE 2#include <unistd.h> 3 4#include "libc.h" 5#include <errno.h> 6 7#define ZX_PPID ((pid_t)2) 8#define ZX_PID ((pid_t)3) 9#define ZX_PGID ((pid_t)17) 10#define ZX_SID ((pid_t)19) 11#define ZX_UID ((uid_t)23) 12#define ZX_GID ((gid_t)42) 13 14static gid_t stub_getegid(void) { 15 return ZX_GID; 16} 17weak_alias(stub_getegid, getegid); 18 19static gid_t stub_getgid(void) { 20 return ZX_GID; 21} 22weak_alias(stub_getgid, getgid); 23 24static int stub_getgroups(int count, gid_t list[]) { 25 if (!list) 26 return EFAULT; 27 return 0; 28} 29weak_alias(stub_getgroups, getgroups); 30 31static int stub_getresgid(gid_t* rgid, gid_t* egid, gid_t* sgid) { 32 if (!rgid || !egid || !sgid) 33 return EFAULT; 34 *rgid = *egid = *sgid = ZX_GID; 35 return 0; 36} 37weak_alias(stub_getresgid, getresgid); 38 39static int stub_getresuid(uid_t* ruid, uid_t* euid, uid_t* suid) { 40 if (!ruid || !euid || !suid) 41 return EFAULT; 42 *ruid = *euid = *suid = ZX_UID; 43 return 0; 44} 45weak_alias(stub_getresuid, getresuid); 46 47static pid_t stub_getpgid(pid_t pid) { 48 return ZX_PGID; 49} 50weak_alias(stub_getpgid, getpgid); 51 52static pid_t stub_getpgrp(void) { 53 return ZX_PGID; 54} 55weak_alias(stub_getpgrp, getpgrp); 56 57static pid_t stub_getpid(void) { 58 return ZX_PID; 59} 60weak_alias(stub_getpid, getpid); 61 62static pid_t stub_getppid(void) { 63 return ZX_PPID; 64} 65weak_alias(stub_getppid, getppid); 66 67static pid_t stub_getsid(pid_t pid) { 68 return ZX_SID; 69} 70weak_alias(stub_getsid, getsid); 71 72static uid_t stub_geteuid(void) { 73 return ZX_UID; 74} 75weak_alias(stub_geteuid, geteuid); 76 77static uid_t stub_getuid(void) { 78 return ZX_UID; 79} 80weak_alias(stub_getuid, getuid); 81 82static pid_t stub_setsid(void) { 83 return ZX_SID; 84} 85weak_alias(stub_setsid, setsid); 86 87static int stub_setegid(gid_t egid) { 88 return ZX_GID; 89} 90weak_alias(stub_setegid, setegid); 91 92static int stub_seteuid(uid_t euid) { 93 errno = EPERM; 94 return -1; 95} 96weak_alias(stub_seteuid, seteuid); 97 98static int stub_setgid(gid_t gid) { 99 errno = EPERM; 100 return -1; 101} 102weak_alias(stub_setgid, setgid); 103 104static int stub_setgroups(size_t count, const gid_t list[]) { 105 errno = EPERM; 106 return -1; 107} 108weak_alias(stub_setgroups, setgroups); 109 110static int stub_setpgid(pid_t pid, pid_t pgid) { 111 errno = EPERM; 112 return -1; 113} 114weak_alias(stub_setpgid, setpgid); 115 116static int stub_setregid(gid_t rgid, gid_t egid) { 117 errno = EPERM; 118 return -1; 119} 120weak_alias(stub_setregid, setregid); 121 122static int stub_setresgid(gid_t rgid, gid_t egid, gid_t sgid) { 123 errno = EPERM; 124 return -1; 125} 126weak_alias(stub_setresgid, setresgid); 127 128static int stub_setresuid(uid_t ruid, uid_t euid, uid_t suid) { 129 errno = EPERM; 130 return -1; 131} 132weak_alias(stub_setresuid, setresuid); 133 134static int stub_setreuid(uid_t ruid, uid_t euid) { 135 errno = EPERM; 136 return -1; 137} 138weak_alias(stub_setreuid, setreuid); 139 140static int stub_setuid(uid_t uid) { 141 errno = EPERM; 142 return -1; 143} 144weak_alias(stub_setuid, setuid); 145