From: Anthony Ferrara Date: Fri, 29 Jun 2012 14:29:58 +0000 (-0400) Subject: Merge remote branch 'upstream/master' into hash_password X-Git-Tag: php-5.5.0alpha1~18^2~17^2~2^2~32 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9e18e578f0e7f30c2d73ae38620b5fd228ac21eb;p=php Merge remote branch 'upstream/master' into hash_password Conflicts: ext/standard/crypt.c --- 9e18e578f0e7f30c2d73ae38620b5fd228ac21eb diff --cc ext/standard/crypt.c index a592a4b37c,27a8d82d0e..25f5ec0107 --- a/ext/standard/crypt.c +++ b/ext/standard/crypt.c @@@ -171,36 -199,46 +171,36 @@@ PHPAPI int crypt_execute(const char *pa char *output; int needed = (sizeof(sha512_salt_prefix) - 1 + sizeof(sha512_rounds_prefix) + 9 + 1 - + PHP_MAX_SALT_LEN + 43 + 1); + + salt_in_len + 1 + 86 + 1); output = emalloc(needed); - salt[salt_in_len] = '\0'; - crypt_res = php_sha512_crypt_r(str, salt, output, needed); + crypt_res = php_sha512_crypt_r(password, salt, output, needed); if (!crypt_res) { - if (salt[0]=='*' && salt[1]=='0') { - RETVAL_STRING("*1", 1); - } else { - RETVAL_STRING("*0", 1); - } + memset(output, 0, needed); + efree(output); + return FAILURE; } else { - RETVAL_STRING(output, 1); + *result = output; + return SUCCESS; } - - memset(output, 0, needed); - efree(output); } else if (salt[0]=='$' && salt[1]=='5' && salt[2]=='$') { const char sha256_salt_prefix[] = "$5$"; const char sha256_rounds_prefix[] = "rounds="; char *output; int needed = (sizeof(sha256_salt_prefix) - 1 + sizeof(sha256_rounds_prefix) + 9 + 1 - + PHP_MAX_SALT_LEN + 43 + 1); + + salt_in_len + 1 + 43 + 1); output = emalloc(needed); - salt[salt_in_len] = '\0'; - crypt_res = php_sha256_crypt_r(str, salt, output, needed); + crypt_res = php_sha256_crypt_r(password, salt, output, needed); if (!crypt_res) { - if (salt[0]=='*' && salt[1]=='0') { - RETVAL_STRING("*1", 1); - } else { - RETVAL_STRING("*0", 1); - } + memset(output, 0, needed); + efree(output); + return FAILURE; } else { - RETVAL_STRING(output, 1); + *result = output; + return SUCCESS; } - - memset(output, 0, needed); - efree(output); } else if ( salt[0] == '$' && salt[1] == '2' &&