diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2009-04-22 13:41:59 +1000 |
---|---|---|
committer | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2009-04-23 04:44:26 +1000 |
commit | 37ec9a93b0d1ba7d3252f36842155194c7f0c4c0 (patch) | |
tree | fc9373551e8e39d8528910dc0192a2333926c86b /libbb | |
parent | 95a9140eceb43d5dba205e171d7a5e09f67331ff (diff) | |
download | busybox-w32-37ec9a93b0d1ba7d3252f36842155194c7f0c4c0.tar.gz busybox-w32-37ec9a93b0d1ba7d3252f36842155194c7f0c4c0.tar.bz2 busybox-w32-37ec9a93b0d1ba7d3252f36842155194c7f0c4c0.zip |
fixes up to 1.6.1
Diffstat (limited to 'libbb')
-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 c515b26af..af6ff076d 100644 --- a/libbb/correct_password.c +++ b/libbb/correct_password.c | |||
@@ -31,9 +31,10 @@ | |||
31 | #include "libbb.h" | 31 | #include "libbb.h" |
32 | 32 | ||
33 | /* Ask the user for a password. | 33 | /* Ask the user for a password. |
34 | Return 1 if the user gives the correct password for entry PW, | 34 | * Return 1 if the user gives the correct password for entry PW, |
35 | 0 if not. Return 1 without asking for a password if run by UID 0 | 35 | * 0 if not. Return 1 without asking if PW has an empty password. |
36 | or if PW has an empty password. */ | 36 | * |
37 | * NULL pw means "just fake it for login with bad username" */ | ||
37 | 38 | ||
38 | int correct_password(const struct passwd *pw) | 39 | int correct_password(const struct passwd *pw) |
39 | { | 40 | { |
@@ -46,6 +47,9 @@ int correct_password(const struct passwd *pw) | |||
46 | char buffer[256]; | 47 | char buffer[256]; |
47 | #endif | 48 | #endif |
48 | 49 | ||
50 | correct = "aa"; /* fake salt. crypt() can choke otherwise */ | ||
51 | if (!pw) | ||
52 | goto fake_it; /* "aa" will never match */ | ||
49 | correct = pw->pw_passwd; | 53 | correct = pw->pw_passwd; |
50 | #if ENABLE_FEATURE_SHADOWPASSWDS | 54 | #if ENABLE_FEATURE_SHADOWPASSWDS |
51 | if (LONE_CHAR(pw->pw_passwd, 'x') || LONE_CHAR(pw->pw_passwd, '*')) { | 55 | if (LONE_CHAR(pw->pw_passwd, 'x') || LONE_CHAR(pw->pw_passwd, '*')) { |
@@ -59,6 +63,7 @@ int correct_password(const struct passwd *pw) | |||
59 | if (!correct || correct[0] == '\0') | 63 | if (!correct || correct[0] == '\0') |
60 | return 1; | 64 | return 1; |
61 | 65 | ||
66 | fake_it: | ||
62 | unencrypted = bb_askpass(0, "Password: "); | 67 | unencrypted = bb_askpass(0, "Password: "); |
63 | if (!unencrypted) { | 68 | if (!unencrypted) { |
64 | return 0; | 69 | return 0; |