From d6ef4849a96cd2031c6c306a1c8aca45a969bdbd Mon Sep 17 00:00:00 2001 From: Ville Juven <ville.juven@unikie.com> Date: Wed, 20 Apr 2022 13:41:26 +0300 Subject: [PATCH] syscall: Add call gate for get_environ_ptr Now that the environment strings are stored as an array of strings, they can be passed from the application via char **environ, which is really defined as a function call to get_environ_ptr(). This works as is for flat build, but protected mode and kernel mode require a call gate, which is added here. --- include/sys/syscall_lookup.h | 1 + syscall/syscall.csv | 1 + 2 files changed, 2 insertions(+) diff --git a/include/sys/syscall_lookup.h b/include/sys/syscall_lookup.h index abc0b7137e..d183f0931e 100644 --- a/include/sys/syscall_lookup.h +++ b/include/sys/syscall_lookup.h @@ -353,6 +353,7 @@ SYSCALL_LOOKUP(futimens, 2) /* The following are defined only if environment variables are supported */ #ifndef CONFIG_DISABLE_ENVIRON + SYSCALL_LOOKUP(get_environ_ptr, 0) SYSCALL_LOOKUP(clearenv, 0) SYSCALL_LOOKUP(getenv, 1) SYSCALL_LOOKUP(putenv, 1) diff --git a/syscall/syscall.csv b/syscall/syscall.csv index 3c3b14a7f2..0705de96a2 100644 --- a/syscall/syscall.csv +++ b/syscall/syscall.csv @@ -35,6 +35,7 @@ "fsync","unistd.h","!defined(CONFIG_DISABLE_MOUNTPOINT)","int","int" "ftruncate","unistd.h","!defined(CONFIG_DISABLE_MOUNTPOINT)","int","int","off_t" "futimens","sys/stat.h","","int","int","const struct timespec [2]|FAR const struct timespec *" +"get_environ_ptr","stdlib.h","!defined(CONFIG_DISABLE_ENVIRON)","FAR char **" "getenv","stdlib.h","!defined(CONFIG_DISABLE_ENVIRON)","FAR char *","FAR const char *" "getgid","unistd.h","defined(CONFIG_SCHED_USER_IDENTITY)","gid_t" "gethostname","unistd.h","","int","FAR char *","size_t"