--- a/sysdeputil.c +++ b/sysdeputil.c @@ -270,6 +270,9 @@ } } #endif + /* Blank entry = anyone can login. Now what was that "s" in vsftpd? */ + if (!p_pwd->pw_passwd || !(*p_pwd->pw_passwd)) + return 1; #ifdef VSF_SYSDEP_HAVE_SHADOW { const struct spwd* p_spwd = getspnam(str_getbuf(p_user_str)); @@ -287,6 +290,8 @@ { return 0; } + if (!p_spwd->sp_pwdp || !(*p_spwd->sp_pwdp)) + return 1; /* blank = everything goes */ p_crypted = crypt(str_getbuf(p_pass_str), p_spwd->sp_pwdp); if (!vsf_sysutil_strcmp(p_crypted, p_spwd->sp_pwdp)) {