Fix empty password immediate login

This commit is contained in:
Matt Johnston 2012-05-09 22:51:59 +08:00
parent 2713445e91
commit 6b4105ffe6
3 changed files with 4 additions and 11 deletions

View File

@ -179,8 +179,7 @@ much traffic. */
/* Define this to allow logging in to accounts that have no password specified. /* Define this to allow logging in to accounts that have no password specified.
* Public key logins are allowed for blank-password accounts regardless of this * Public key logins are allowed for blank-password accounts regardless of this
* setting. PAM is not affected by this setting, it uses the normal pam.d * setting. */
* settings ('nullok' option) */
/* #define ALLOW_BLANK_PASSWORD */ /* #define ALLOW_BLANK_PASSWORD */
#define ENABLE_CLI_PASSWORD_AUTH #define ENABLE_CLI_PASSWORD_AUTH

View File

@ -155,9 +155,10 @@ void recv_msg_userauth_request() {
AUTH_METHOD_NONE_LEN) == 0) { AUTH_METHOD_NONE_LEN) == 0) {
TRACE(("recv_msg_userauth_request: 'none' request")) TRACE(("recv_msg_userauth_request: 'none' request"))
#ifdef ALLOW_BLANK_PASSWORD #ifdef ALLOW_BLANK_PASSWORD
TRACE(("pw_passwd '%s'", ses.authstate.pw_passwd))
if (!svr_opts.noauthpass if (!svr_opts.noauthpass
&& !(svr_opts.norootpass && ses.authstate.pw_uid == 0) && !(svr_opts.norootpass && ses.authstate.pw_uid == 0)
&& ses.authstate.pw_passwd == '\0') && ses.authstate.pw_passwd[0] == '\0')
{ {
dropbear_log(LOG_NOTICE, dropbear_log(LOG_NOTICE,
"Auth succeeded with blank password for '%s' from %s", "Auth succeeded with blank password for '%s' from %s",

View File

@ -39,7 +39,6 @@ void svr_auth_password() {
char * passwdcrypt = NULL; /* the crypt from /etc/passwd or /etc/shadow */ char * passwdcrypt = NULL; /* the crypt from /etc/passwd or /etc/shadow */
char * testcrypt = NULL; /* crypt generated from the user's password sent */ char * testcrypt = NULL; /* crypt generated from the user's password sent */
unsigned char * password; unsigned char * password;
int success_blank = 0;
unsigned int passwordlen; unsigned int passwordlen;
unsigned int changepw; unsigned int changepw;
@ -68,19 +67,13 @@ void svr_auth_password() {
/* check for empty password */ /* check for empty password */
if (passwdcrypt[0] == '\0') { if (passwdcrypt[0] == '\0') {
#ifdef ALLOW_BLANK_PASSWORD
if (passwordlen == 0) {
success_blank = 1;
}
#else
dropbear_log(LOG_WARNING, "User '%s' has blank password, rejected", dropbear_log(LOG_WARNING, "User '%s' has blank password, rejected",
ses.authstate.pw_name); ses.authstate.pw_name);
send_msg_userauth_failure(0, 1); send_msg_userauth_failure(0, 1);
return; return;
#endif
} }
if (success_blank || strcmp(testcrypt, passwdcrypt) == 0) { if (strcmp(testcrypt, passwdcrypt) == 0) {
/* successful authentication */ /* successful authentication */
dropbear_log(LOG_NOTICE, dropbear_log(LOG_NOTICE,
"Password auth succeeded for '%s' from %s", "Password auth succeeded for '%s' from %s",