wok-undigest rev 547
busybox/httpd: fix pam failure case
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Sun Nov 06 21:16:59 2011 +0100 (2011-11-06) |
parents | fb505ef6dddb |
children | a04db637d5d2 |
files | busybox/stuff/busybox-1.19-httpd.u |
line diff
1.1 --- a/busybox/stuff/busybox-1.19-httpd.u Sun Nov 06 19:03:48 2011 +0100 1.2 +++ b/busybox/stuff/busybox-1.19-httpd.u Sun Nov 06 21:16:59 2011 +0100 1.3 @@ -91,7 +91,7 @@ 1.4 1.5 dir_prefix = cur->before_colon; 1.6 1.7 -@@ -1771,36 +1833,78 @@ 1.8 +@@ -1771,36 +1833,80 @@ 1.9 prev = dir_prefix; 1.10 1.11 if (ENABLE_FEATURE_HTTPD_AUTH_MD5) { 1.12 @@ -113,20 +113,22 @@ 1.13 + struct pam_userinfo userinfo; 1.14 + struct pam_conv conv_info = {&pam_talker, (void *) &userinfo}; 1.15 + pam_handle_t *pamh; 1.16 ++ 1.17 ++ userinfo.name = username; 1.18 ++ userinfo.pw = unencrypted; 1.19 1.20 - md5_passwd = strchr(cur->after_colon, ':'); 1.21 - if (md5_passwd && md5_passwd[1] == '$' && md5_passwd[2] == '1' 1.22 - && md5_passwd[3] == '$' && md5_passwd[4] 1.23 -+ userinfo.name = username; 1.24 -+ userinfo.pw = unencrypted; 1.25 -+ 1.26 + if (cur->after_colon[0] != '*' && 1.27 + strncmp(username,cur->after_colon,user_len_p1 - 1) != 0) 1.28 + continue; 1.29 + r = pam_start("httpd", username, &conv_info, &pamh) != PAM_SUCCESS 1.30 -+ || pam_authenticate(pamh, PAM_DISALLOW_NULL_AUTHTOK) != PAM_SUCCESS 1.31 -+ || pam_acct_mgmt(pamh, PAM_DISALLOW_NULL_AUTHTOK) != PAM_SUCCESS; 1.32 -+ pam_end(pamh, PAM_SUCCESS); 1.33 ++ if (r == 0) { 1.34 ++ r = pam_authenticate(pamh, PAM_DISALLOW_NULL_AUTHTOK) != PAM_SUCCESS 1.35 ++ || pam_acct_mgmt(pamh, PAM_DISALLOW_NULL_AUTHTOK) != PAM_SUCCESS; 1.36 ++ pam_end(pamh, PAM_SUCCESS); 1.37 ++ } 1.38 + goto end_check_passwd; 1.39 +#else 1.40 + struct passwd *pw = getpwnam(username);