sched/group and syscall/: Implement 'real' setuid, getuid, setgid, and getgid interfaces. These will be inheritance by all child task groups.

This commit is contained in:
Gregory Nutt
2019-08-06 14:13:43 -06:00
parent 945e27d85c
commit ec5120f69e
16 changed files with 419 additions and 16 deletions
+4
View File
@@ -32,11 +32,13 @@
"get_errno","errno.h","!defined(__DIRECT_ERRNO_ACCESS)","int"
"get_errno_ptr","errno.h","defined(__DIRECT_ERRNO_ACCESS)","FAR int*"
"getenv","stdlib.h","!defined(CONFIG_DISABLE_ENVIRON)","FAR char*","FAR const char*"
"getgid","unistd.h","defined(CONFIG_SCHED_USER_IDENTITY)","gid_t"
"getpeername","sys/socket.h","defined(CONFIG_NET)","int","int","FAR struct sockaddr *","FAR socklen_t *"
"getpid","unistd.h","","pid_t"
"getrandom","sys/random.h","defined(CONFIG_CRYPTO_RANDOM_POOL)","void","FAR void*","size_t"
"getsockname","sys/socket.h","defined(CONFIG_NET)","int","int","FAR struct sockaddr *","FAR socklen_t *"
"getsockopt","sys/socket.h","defined(CONFIG_NET)","int","int","int","int","FAR void*","FAR socklen_t*"
"getuid","unistd.h","defined(CONFIG_SCHED_USER_IDENTITY)","uid_t"
"if_indextoname","net/if.h","defined(CONFIG_NETDEV_IFINDEX)","FAR char *","unsigned int","FAR char *"
"if_nametoindex","net/if.h","defined(CONFIG_NETDEV_IFINDEX)","unsigned int","FAR const char *"
"insmod","nuttx/module.h","defined(CONFIG_MODULE)","FAR void *","FAR const char *","FAR const char *"
@@ -141,8 +143,10 @@
"sendto","sys/socket.h","defined(CONFIG_NET)","ssize_t","int","FAR const void*","size_t","int","FAR const struct sockaddr*","socklen_t"
"set_errno","errno.h","!defined(__DIRECT_ERRNO_ACCESS)","void","int"
"setenv","stdlib.h","!defined(CONFIG_DISABLE_ENVIRON)","int","FAR const char*","FAR const char*","int"
"setgid","unistd.h","defined(CONFIG_SCHED_USER_IDENTITY)","int","gid_t"
"sethostname","unistd.h","defined(CONFIG_LIBC_NETDB)","int","FAR const char*","size_t"
"setsockopt","sys/socket.h","defined(CONFIG_NET)","int","int","int","int","FAR const void*","socklen_t"
"setuid","unistd.h","defined(CONFIG_SCHED_USER_IDENTITY)","int","uid_t"
"shmat", "sys/shm.h", "defined(CONFIG_MM_SHM)", "FAR void *", "int", "FAR const void *", "int"
"shmctl", "sys/shm.h", "defined(CONFIG_MM_SHM)", "int", "int", "int", "FAR struct shmid_ds *"
"shmdt", "sys/shm.h", "defined(CONFIG_MM_SHM)", "int", "FAR const void *"
1 _exit unistd.h void int
32 get_errno errno.h !defined(__DIRECT_ERRNO_ACCESS) int
33 get_errno_ptr errno.h defined(__DIRECT_ERRNO_ACCESS) FAR int*
34 getenv stdlib.h !defined(CONFIG_DISABLE_ENVIRON) FAR char* FAR const char*
35 getgid unistd.h defined(CONFIG_SCHED_USER_IDENTITY) gid_t
36 getpeername sys/socket.h defined(CONFIG_NET) int int
37 getpid unistd.h pid_t
38 getrandom sys/random.h defined(CONFIG_CRYPTO_RANDOM_POOL) void FAR void*
39 getsockname sys/socket.h defined(CONFIG_NET) int int
40 getsockopt sys/socket.h defined(CONFIG_NET) int int
41 getuid unistd.h defined(CONFIG_SCHED_USER_IDENTITY) uid_t
42 if_indextoname net/if.h defined(CONFIG_NETDEV_IFINDEX) FAR char * unsigned int
43 if_nametoindex net/if.h defined(CONFIG_NETDEV_IFINDEX) unsigned int FAR const char *
44 insmod nuttx/module.h defined(CONFIG_MODULE) FAR void * FAR const char *
143 sendto sys/socket.h defined(CONFIG_NET) ssize_t int
144 set_errno errno.h !defined(__DIRECT_ERRNO_ACCESS) void int
145 setenv stdlib.h !defined(CONFIG_DISABLE_ENVIRON) int FAR const char*
146 setgid unistd.h defined(CONFIG_SCHED_USER_IDENTITY) int gid_t
147 sethostname unistd.h defined(CONFIG_LIBC_NETDB) int FAR const char*
148 setsockopt sys/socket.h defined(CONFIG_NET) int int
149 setuid unistd.h defined(CONFIG_SCHED_USER_IDENTITY) int uid_t
150 shmat sys/shm.h defined(CONFIG_MM_SHM) FAR void * int
151 shmctl sys/shm.h defined(CONFIG_MM_SHM) int int
152 shmdt sys/shm.h defined(CONFIG_MM_SHM) int FAR const void *
+9
View File
@@ -59,6 +59,15 @@ SYSCALL_LOOKUP(sched_yield, 0, STUB_sched_yield)
SYSCALL_LOOKUP(set_errno, 1, STUB_set_errno)
SYSCALL_LOOKUP(uname, 1, STUB_uname)
/* User identity */
#ifdef CONFIG_SCHED_USER_IDENTITY
SYSCALL_LOOKUP(setuid, 1, STUB_setuid)
SYSCALL_LOOKUP(getuid, 0, STUB_getuid)
SYSCALL_LOOKUP(setgid, 1, STUB_setgid)
SYSCALL_LOOKUP(getgid, 0, STUB_getgid)
#endif
/* Semaphores */
SYSCALL_LOOKUP(sem_destroy, 1, STUB_sem_destroy)
+7
View File
@@ -78,6 +78,13 @@ uintptr_t STUB_sched_yield(int nbr);
uintptr_t STUB_set_errno(int nbr, uintptr_t parm1);
uintptr_t STUB_uname(int nbr, uintptr_t parm1);
/* User identity */
uintptr_t STUB_setuid(int nbr, uintptr_t parm1);
uintptr_t STUB_getuid(int nbr);
uintptr_t STUB_setgid(int nbr, uintptr_t parm1);
uintptr_t STUB_getgid(int nbr);
/* Semaphores */
uintptr_t STUB_sem_close(int nbr, uintptr_t parm1);