summaryrefslogtreecommitdiff
path: root/ext/standard/crypt.c
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2016-03-25 20:23:04 +0100
committerNikita Popov <nikic@php.net>2016-03-25 20:23:04 +0100
commitbd90f5507f63b2b624c9ad04668c67cc3d1b8952 (patch)
tree024de0000483e46870ee589fa10b50ed902474e8 /ext/standard/crypt.c
parent1929fc9b16c836c1449dee3fd3570031ff8dcba1 (diff)
parent54da966883bacf28808e26eeda48fe38e21b118e (diff)
downloadphp-git-bd90f5507f63b2b624c9ad04668c67cc3d1b8952.tar.gz
Merge branch 'PHP-5.6' into PHP-7.0
Conflicts: ext/standard/crypt.c
Diffstat (limited to 'ext/standard/crypt.c')
-rw-r--r--ext/standard/crypt.c32
1 files changed, 19 insertions, 13 deletions
diff --git a/ext/standard/crypt.c b/ext/standard/crypt.c
index 6bc90e2b07..66b37eb79e 100644
--- a/ext/standard/crypt.c
+++ b/ext/standard/crypt.c
@@ -246,6 +246,13 @@ PHPAPI zend_string *php_crypt(const char *password, const int pass_len, const ch
}
#else
+ if (salt[0] != '$' && salt[0] != '_' && (!IS_VALID_SALT_CHARACTER(salt[0]) || !IS_VALID_SALT_CHARACTER(salt[1]))) {
+ if (!quiet) {
+ /* error consistently about invalid DES fallbacks */
+ php_error_docref(NULL, E_DEPRECATED, DES_INVALID_SALT_ERROR);
+ }
+ }
+
# if defined(HAVE_CRYPT_R) && (defined(_REENTRANT) || defined(_THREAD_SAFE))
{
# if defined(CRYPT_R_STRUCT_CRYPT_DATA)
@@ -254,24 +261,23 @@ PHPAPI zend_string *php_crypt(const char *password, const int pass_len, const ch
# elif defined(CRYPT_R_CRYPTD)
CRYPTD buffer;
# else
-# error Data struct used by crypt_r() is unknown. Please report.
+# error Data struct used by crypt_r() is unknown. Please report.
# endif
- if (salt[0] != '$' && salt[0] != '_' && (!IS_VALID_SALT_CHARACTER(salt[0]) || !IS_VALID_SALT_CHARACTER(salt[1]))) {
- if (!quiet) {
- /* error consistently about invalid DES fallbacks */
- php_error_docref(NULL, E_DEPRECATED, DES_INVALID_SALT_ERROR);
- }
- }
crypt_res = crypt_r(password, salt, &buffer);
- if (!crypt_res || (salt[0] == '*' && salt[1] == '0')) {
- return NULL;
- } else {
- result = zend_string_init(crypt_res, strlen(crypt_res), 0);
- return result;
- }
}
+# elif defined(HAVE_CRYPT)
+ crypt_res = crypt(password, salt);
+# else
+# error No crypt() implementation
# endif
#endif
+
+ if (!crypt_res || (salt[0] == '*' && salt[1] == '0')) {
+ return NULL;
+ } else {
+ result = zend_string_init(crypt_res, strlen(crypt_res), 0);
+ return result;
+ }
}
/* }}} */