From e190c166364d0a5bb5e5089a16644ff96c9799e5 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Tue, 3 Jul 2007 06:15:42 +0000 Subject: correct_password: do not print "no shadow passwd..." message function old new delta correct_password 204 191 -13 .rodata 129530 129466 -64 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-77) Total: -77 bytes text data bss dec hex filename 675984 2744 13968 692696 a91d8 busybox_old 675908 2744 13968 692620 a918c busybox_unstripped --- libbb/correct_password.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'libbb') diff --git a/libbb/correct_password.c b/libbb/correct_password.c index f832635e6..815c51c43 100644 --- a/libbb/correct_password.c +++ b/libbb/correct_password.c @@ -40,12 +40,6 @@ int correct_password(const struct passwd *pw) { char *unencrypted, *encrypted; const char *correct; -#if ENABLE_FEATURE_SHADOWPASSWDS - /* Using _r function to avoid pulling in static buffers */ - struct spwd spw; - struct spwd *result; - char buffer[256]; -#endif /* fake salt. crypt() can choke otherwise. */ correct = "aa"; @@ -55,11 +49,14 @@ int correct_password(const struct passwd *pw) } correct = pw->pw_passwd; #if ENABLE_FEATURE_SHADOWPASSWDS - if (LONE_CHAR(pw->pw_passwd, 'x') || LONE_CHAR(pw->pw_passwd, '*')) { - if (getspnam_r(pw->pw_name, &spw, buffer, sizeof(buffer), &result)) - bb_error_msg("no valid shadow password, checking ordinary one"); - else + if ((correct[0] == 'x' || correct[0] == '*') && !correct[1]) { + /* Using _r function to avoid pulling in static buffers */ + struct spwd spw; + struct spwd *result; + char buffer[256]; + if (getspnam_r(pw->pw_name, &spw, buffer, sizeof(buffer), &result) == 0) correct = spw.sp_pwdp; + /* else: no valid shadow password, checking ordinary one */ } #endif -- cgit v1.2.3