You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by tr...@apache.org on 2012/08/08 03:22:44 UTC
svn commit: r1370626 - /apr/apr/trunk/crypto/apr_passwd.c
Author: trawick
Date: Wed Aug 8 01:22:44 2012
New Revision: 1370626
URL: http://svn.apache.org/viewvc?rev=1370626&view=rev
Log:
apr_password_validate(): Fix intermittent errors on systems
such as FreeBSD where the crypt() function is used.
Modified:
apr/apr/trunk/crypto/apr_passwd.c
Modified: apr/apr/trunk/crypto/apr_passwd.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/crypto/apr_passwd.c?rev=1370626&r1=1370625&r2=1370626&view=diff
==============================================================================
--- apr/apr/trunk/crypto/apr_passwd.c (original)
+++ apr/apr/trunk/crypto/apr_passwd.c Wed Aug 8 01:22:44 2012
@@ -160,18 +160,23 @@ APR_DECLARE(apr_status_t) apr_password_v
#if defined(_AIX) && APR_HAS_THREADS
#error Configuration error! crypt_r() should have been selected!
#endif
+ {
+ apr_status_t rv;
- /* Handle thread safety issues by holding a mutex around the
- * call to crypt().
- */
- crypt_mutex_lock();
- crypt_pw = crypt(passwd, hash);
- if (!crypt_pw) {
+ /* Handle thread safety issues by holding a mutex around the
+ * call to crypt().
+ */
+ crypt_mutex_lock();
+ crypt_pw = crypt(passwd, hash);
+ if (!crypt_pw) {
+ rv = APR_EMISMATCH;
+ }
+ else {
+ rv = (strcmp(crypt_pw, hash) == 0) ? APR_SUCCESS : APR_EMISMATCH;
+ }
crypt_mutex_unlock();
- return APR_EMISMATCH;
+ return rv;
}
- crypt_mutex_unlock();
- return (strcmp(crypt_pw, hash) == 0) ? APR_SUCCESS : APR_EMISMATCH;
#endif
}
return (strcmp(sample, hash) == 0) ? APR_SUCCESS : APR_EMISMATCH;