version 1.8, 2015/07/18 06:33:23 |
version 1.9, 2015/07/18 18:44:26 |
|
|
arraylen(const char **arr) |
arraylen(const char **arr) |
{ |
{ |
size_t cnt = 0; |
size_t cnt = 0; |
|
|
while (*arr) { |
while (*arr) { |
cnt++; |
cnt++; |
arr++; |
arr++; |
|
|
char **envp, int ei) |
char **envp, int ei) |
{ |
{ |
int i; |
int i; |
|
|
for (i = 0; i < nsafe; i++) { |
for (i = 0; i < nsafe; i++) { |
const char **oe = oldenvp; |
const char **oe = oldenvp; |
while (*oe) { |
while (*oe) { |
|
|
"PATH", "TERM", "USER", "USERNAME", |
"PATH", "TERM", "USER", "USERNAME", |
NULL, |
NULL, |
}; |
}; |
int nsafe; |
|
int nextras = 0; |
|
char **envp; |
char **envp; |
const char **extra; |
const char **extra; |
int ei; |
int ei; |
int i, j; |
int i, j; |
|
int nsafe; |
|
int nextras = 0; |
|
|
if ((rule->options & KEEPENV) && !rule->envlist) { |
if ((rule->options & KEEPENV) && !rule->envlist) { |
j = arraylen(oldenvp); |
j = arraylen(oldenvp); |
|
|
int |
int |
main(int argc, char **argv, char **envp) |
main(int argc, char **argv, char **envp) |
{ |
{ |
|
const char *safepath = "/bin:/sbin:/usr/bin:/usr/sbin:" |
|
"/usr/local/bin:/usr/local/sbin"; |
|
char *shargv[] = { NULL, NULL }; |
|
char *sh; |
|
const char *cmd; |
char cmdline[LINE_MAX]; |
char cmdline[LINE_MAX]; |
char myname[_PW_NAME_LEN + 1]; |
char myname[_PW_NAME_LEN + 1]; |
uid_t uid, target = 0; |
|
gid_t groups[NGROUPS_MAX + 1]; |
|
int ngroups; |
|
struct passwd *pw; |
struct passwd *pw; |
struct rule *rule; |
struct rule *rule; |
const char *cmd; |
uid_t uid; |
|
uid_t target = 0; |
|
gid_t groups[NGROUPS_MAX + 1]; |
|
int ngroups; |
int i, ch; |
int i, ch; |
const char *safepath = "/bin:/sbin:/usr/bin:/usr/sbin:" |
|
"/usr/local/bin:/usr/local/sbin"; |
|
int sflag = 0; |
int sflag = 0; |
char *shargv[] = { NULL, NULL }; |
|
char *sh; |
|
|
|
parseconfig("/etc/doas.conf"); |
parseconfig("/etc/doas.conf"); |
|
|