diff options
Diffstat (limited to 'libbb/correct_password.c')
-rw-r--r-- | libbb/correct_password.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/libbb/correct_password.c b/libbb/correct_password.c index 6255f7e65..d0f68c0cd 100644 --- a/libbb/correct_password.c +++ b/libbb/correct_password.c | |||
@@ -47,9 +47,14 @@ int correct_password(const struct passwd *pw) | |||
47 | char buffer[256]; | 47 | char buffer[256]; |
48 | #endif | 48 | #endif |
49 | 49 | ||
50 | correct = bb_msg_full_version; /* fake salt. crypt() can choke otherwise */ | 50 | /* fake salt. crypt() can choke otherwise. |
51 | if (!pw) | 51 | * (bb_banner's first two chars are letters and thus are valid salt) */ |
52 | goto fake_it; /* The content of 'correct' will never match */ | 52 | correct = bb_banner; |
53 | if (!pw) { | ||
54 | /* bb_banner will never match, it contains () which is never | ||
55 | * generated in valid encrypted passwords. */ | ||
56 | goto fake_it; | ||
57 | } | ||
53 | correct = pw->pw_passwd; | 58 | correct = pw->pw_passwd; |
54 | #if ENABLE_FEATURE_SHADOWPASSWDS | 59 | #if ENABLE_FEATURE_SHADOWPASSWDS |
55 | if (LONE_CHAR(pw->pw_passwd, 'x') || LONE_CHAR(pw->pw_passwd, '*')) { | 60 | if (LONE_CHAR(pw->pw_passwd, 'x') || LONE_CHAR(pw->pw_passwd, '*')) { |