version 1.164.2.1, 2021/09/26 14:03:57 |
version 1.165, 2021/06/04 05:02:40 |
|
|
} |
} |
closefrom(STDERR_FILENO + 1); |
closefrom(STDERR_FILENO + 1); |
|
|
if (geteuid() == 0 && |
|
initgroups(pw->pw_name, pw->pw_gid) == -1) { |
|
error("%s: initgroups(%s, %u): %s", tag, |
|
pw->pw_name, (u_int)pw->pw_gid, strerror(errno)); |
|
_exit(1); |
|
} |
|
if (setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) == -1) { |
if (setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) == -1) { |
error("%s: setresgid %u: %s", tag, (u_int)pw->pw_gid, |
error("%s: setresgid %u: %s", tag, (u_int)pw->pw_gid, |
strerror(errno)); |
strerror(errno)); |
|
|
if (child != NULL) |
if (child != NULL) |
*child = f; |
*child = f; |
return pid; |
return pid; |
|
} |
|
|
|
const char * |
|
lookup_env_in_list(const char *env, char * const *envs, size_t nenvs) |
|
{ |
|
size_t i, envlen; |
|
|
|
envlen = strlen(env); |
|
for (i = 0; i < nenvs; i++) { |
|
if (strncmp(envs[i], env, envlen) == 0 && |
|
envs[i][envlen] == '=') { |
|
return envs[i] + envlen + 1; |
|
} |
|
} |
|
return NULL; |
} |
} |