Make sudo_auth_{init,cleanup} return TRUE on success and check for
sudo_auth_init() return value in check_user().
This commit is contained in:
@@ -107,10 +107,10 @@ int
|
|||||||
sudo_auth_init(struct passwd *pw)
|
sudo_auth_init(struct passwd *pw)
|
||||||
{
|
{
|
||||||
sudo_auth *auth;
|
sudo_auth *auth;
|
||||||
int status;
|
int status = AUTH_SUCCESS;
|
||||||
|
|
||||||
if (auth_switch[0].name == NULL)
|
if (auth_switch[0].name == NULL)
|
||||||
return AUTH_SUCCESS;
|
return TRUE;
|
||||||
|
|
||||||
/* Make sure we haven't mixed standalone and shared auth methods. */
|
/* Make sure we haven't mixed standalone and shared auth methods. */
|
||||||
standalone = IS_STANDALONE(&auth_switch[0]);
|
standalone = IS_STANDALONE(&auth_switch[0]);
|
||||||
@@ -141,18 +141,18 @@ sudo_auth_init(struct passwd *pw)
|
|||||||
else if (status == AUTH_FATAL) {
|
else if (status == AUTH_FATAL) {
|
||||||
/* XXX log */
|
/* XXX log */
|
||||||
audit_failure(NewArgv, "authentication failure");
|
audit_failure(NewArgv, "authentication failure");
|
||||||
return -1; /* assume error msg already printed */
|
break; /* assume error msg already printed */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return AUTH_SUCCESS;
|
return status == AUTH_FATAL ? -1 : TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
sudo_auth_cleanup(struct passwd *pw)
|
sudo_auth_cleanup(struct passwd *pw)
|
||||||
{
|
{
|
||||||
sudo_auth *auth;
|
sudo_auth *auth;
|
||||||
int status;
|
int status = AUTH_SUCCESS;
|
||||||
|
|
||||||
/* Call cleanup routines. */
|
/* Call cleanup routines. */
|
||||||
for (auth = auth_switch; auth->name; auth++) {
|
for (auth = auth_switch; auth->name; auth++) {
|
||||||
@@ -168,11 +168,11 @@ sudo_auth_cleanup(struct passwd *pw)
|
|||||||
if (status == AUTH_FATAL) {
|
if (status == AUTH_FATAL) {
|
||||||
/* XXX log */
|
/* XXX log */
|
||||||
audit_failure(NewArgv, "authentication failure");
|
audit_failure(NewArgv, "authentication failure");
|
||||||
return -1; /* assume error msg already printed */
|
break; /* assume error msg already printed */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return AUTH_SUCCESS;
|
return status == AUTH_FATAL ? -1 : TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@@ -116,7 +116,11 @@ check_user(int validated, int mode)
|
|||||||
|
|
||||||
/* Init authentication system regardless of whether we need a password. */
|
/* Init authentication system regardless of whether we need a password. */
|
||||||
auth_pw = get_authpw();
|
auth_pw = get_authpw();
|
||||||
sudo_auth_init(auth_pw);
|
if (sudo_auth_init(auth_pw) == -1) {
|
||||||
|
pw_delref(auth_pw);
|
||||||
|
rval = -1;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
pw_delref(auth_pw);
|
pw_delref(auth_pw);
|
||||||
|
|
||||||
/* Always prompt for a password when -k was specified with the command. */
|
/* Always prompt for a password when -k was specified with the command. */
|
||||||
|
Reference in New Issue
Block a user