APE fexecve, use static _Thread_local for env buffer to avoid using too much stack

This commit is contained in:
Gavin Hayes 2023-03-24 15:18:12 -04:00
parent 7ae7d0f1b3
commit 45df9bcc39

View file

@ -233,7 +233,7 @@ int fexecve(int fd, char *const argv[], char *const envp[]) {
size_t numenvs; size_t numenvs;
for (numenvs = 0; envp[numenvs];) ++numenvs; for (numenvs = 0; envp[numenvs];) ++numenvs;
const size_t desenvs = min(500, max(numenvs + 1, 2)); const size_t desenvs = min(500, max(numenvs + 1, 2));
char *envs[500]; static _Thread_local char *envs[500];
memcpy(envs, envp, numenvs * sizeof(char *)); memcpy(envs, envp, numenvs * sizeof(char *));
envs[numenvs] = path; envs[numenvs] = path;
envs[numenvs + 1] = NULL; envs[numenvs + 1] = NULL;