version 1.90, 2021/07/12 15:09:19 |
version 1.91, 2021/09/07 13:46:07 |
|
|
} |
} |
} |
} |
|
|
static void |
static int |
authuser(char *myname, char *login_style, int persist) |
authuser(char *myname, char *login_style, int persist) |
{ |
{ |
char *challenge = NULL, *response, rbuf[1024], cbuf[128]; |
char *challenge = NULL, *response, rbuf[1024], cbuf[128]; |
|
|
} |
} |
|
|
if (!(as = auth_userchallenge(myname, login_style, "auth-doas", |
if (!(as = auth_userchallenge(myname, login_style, "auth-doas", |
&challenge))) |
&challenge))) { |
errx(1, "Authentication failed"); |
warnx("Authentication failed"); |
|
return AUTH_FAILED; |
|
} |
if (!challenge) { |
if (!challenge) { |
char host[HOST_NAME_MAX + 1]; |
char host[HOST_NAME_MAX + 1]; |
if (gethostname(host, sizeof(host))) |
if (gethostname(host, sizeof(host))) |
|
|
explicit_bzero(rbuf, sizeof(rbuf)); |
explicit_bzero(rbuf, sizeof(rbuf)); |
syslog(LOG_AUTHPRIV | LOG_NOTICE, |
syslog(LOG_AUTHPRIV | LOG_NOTICE, |
"failed auth for %s", myname); |
"failed auth for %s", myname); |
errx(1, "Authentication failed"); |
warnx("Authentication failed"); |
|
return AUTH_FAILED; |
} |
} |
explicit_bzero(rbuf, sizeof(rbuf)); |
explicit_bzero(rbuf, sizeof(rbuf)); |
good: |
good: |
|
|
ioctl(fd, TIOCSETVERAUTH, &secs); |
ioctl(fd, TIOCSETVERAUTH, &secs); |
close(fd); |
close(fd); |
} |
} |
|
|
|
return AUTH_OK; |
} |
} |
|
|
int |
int |
|
|
int i, ch, rv; |
int i, ch, rv; |
int sflag = 0; |
int sflag = 0; |
int nflag = 0; |
int nflag = 0; |
|
int authed = AUTH_FAILED; |
char cwdpath[PATH_MAX]; |
char cwdpath[PATH_MAX]; |
const char *cwd; |
const char *cwd; |
char *login_style = NULL; |
char *login_style = NULL; |
|
|
if (nflag) |
if (nflag) |
errx(1, "Authentication required"); |
errx(1, "Authentication required"); |
|
|
authuser(mypw->pw_name, login_style, rule->options & PERSIST); |
for (i = 0; i < AUTH_RETRIES; i++) { |
|
authed = authuser(mypw->pw_name, login_style, |
|
rule->options & PERSIST); |
|
if (authed == AUTH_OK) |
|
break; |
|
} |
|
|
|
if (authed != AUTH_OK) |
|
exit(1); |
} |
} |
|
|
if ((p = getenv("PATH")) != NULL) |
if ((p = getenv("PATH")) != NULL) |