pajoye Fri, 11 Dec 2009 15:57:01 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=291993
Log: - #50334, use our own implementations of stpncpy and mempcy, avoiding weird behaviors on certain platforms like solaris Bug: http://bugs.php.net/50334 (Closed) crypt ignores sha512 prefix Changed paths: U php/php-src/branches/PHP_5_3/ext/standard/crypt_sha256.c U php/php-src/branches/PHP_5_3/ext/standard/crypt_sha512.c U php/php-src/trunk/ext/standard/crypt_sha256.c U php/php-src/trunk/ext/standard/crypt_sha512.c Modified: php/php-src/branches/PHP_5_3/ext/standard/crypt_sha256.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/standard/crypt_sha256.c 2009-12-11 15:42:16 UTC (rev 291992) +++ php/php-src/branches/PHP_5_3/ext/standard/crypt_sha256.c 2009-12-11 15:57:01 UTC (rev 291993) @@ -40,8 +40,7 @@ # endif #endif -#ifndef HAVE_STRPNCPY -char * stpncpy(char *dst, const char *src, size_t len) +char * __php_stpncpy(char *dst, const char *src, size_t len) { size_t n = strlen(src); if (n > len) { @@ -49,14 +48,11 @@ } return strncpy(dst, src, len) + n; } -#endif -#ifndef HAVE_MEMPCPY -void * mempcpy(void * dst, const void * src, size_t len) +void * __php_mempcpy(void * dst, const void * src, size_t len) { return (((char *)memcpy(dst, src, len)) + len); } -#endif #ifndef MIN # define MIN(a, b) (((a) < (b)) ? (a) : (b)) @@ -457,7 +453,7 @@ /* Create byte sequence P. */ cp = p_bytes = alloca(key_len); for (cnt = key_len; cnt >= 32; cnt -= 32) { - cp = mempcpy((void *)cp, (const void *)temp_result, 32); + cp = __php_mempcpy((void *)cp, (const void *)temp_result, 32); } memcpy(cp, temp_result, cnt); @@ -475,7 +471,7 @@ /* Create byte sequence S. */ cp = s_bytes = alloca(salt_len); for (cnt = salt_len; cnt >= 32; cnt -= 32) { - cp = mempcpy(cp, temp_result, 32); + cp = __php_mempcpy(cp, temp_result, 32); } memcpy(cp, temp_result, cnt); @@ -515,7 +511,7 @@ /* Now we can construct the result string. It consists of three parts. */ - cp = stpncpy(buffer, sha256_salt_prefix, MAX(0, buflen)); + cp = __php_stpncpy(buffer, sha256_salt_prefix, MAX(0, buflen)); buflen -= sizeof(sha256_salt_prefix) - 1; if (rounds_custom) { @@ -528,7 +524,7 @@ buflen -= n; } - cp = stpncpy(cp, salt, MIN ((size_t) MAX (0, buflen), salt_len)); + cp = __php_stpncpy(cp, salt, MIN ((size_t) MAX (0, buflen), salt_len)); buflen -= MIN((size_t) MAX (0, buflen), salt_len); if (buflen > 0) { Modified: php/php-src/branches/PHP_5_3/ext/standard/crypt_sha512.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/standard/crypt_sha512.c 2009-12-11 15:42:16 UTC (rev 291992) +++ php/php-src/branches/PHP_5_3/ext/standard/crypt_sha512.c 2009-12-11 15:57:01 UTC (rev 291993) @@ -32,21 +32,15 @@ # include <sys/param.h> # include <sys/types.h> # if HAVE_STRING_H -# define __USE_GNU # include <string.h> # else # include <strings.h> # endif #endif -#ifndef HAVE_MEMPCPY -extern void * mempcpy(void * dst, const void * src, size_t len); -#endif +extern void * __php_mempcpy(void * dst, const void * src, size_t len); +extern char * __php_stpncpy(char *dst, const char *src, size_t len); -#ifndef HAVE_STRPNCPY -extern char * stpncpy(char *dst, const char *src, size_t len); -#endif - #ifndef MIN # define MIN(a, b) (((a) < (b)) ? (a) : (b)) #endif @@ -488,7 +482,7 @@ /* Create byte sequence P. */ cp = p_bytes = alloca(key_len); for (cnt = key_len; cnt >= 64; cnt -= 64) { - cp = mempcpy((void *) cp, (const void *)temp_result, 64); + cp = __php_mempcpy((void *) cp, (const void *)temp_result, 64); } memcpy(cp, temp_result, cnt); @@ -507,7 +501,7 @@ /* Create byte sequence S. */ cp = s_bytes = alloca(salt_len); for (cnt = salt_len; cnt >= 64; cnt -= 64) { - cp = mempcpy(cp, temp_result, 64); + cp = __php_mempcpy(cp, temp_result, 64); } memcpy(cp, temp_result, cnt); @@ -547,7 +541,7 @@ /* Now we can construct the result string. It consists of three parts. */ - cp = stpncpy(buffer, sha512_salt_prefix, MAX(0, buflen)); + cp = __php_stpncpy(buffer, sha512_salt_prefix, MAX(0, buflen)); buflen -= sizeof(sha512_salt_prefix) - 1; if (rounds_custom) { @@ -560,7 +554,7 @@ buflen -= n; } - cp = stpncpy(cp, salt, MIN((size_t) MAX(0, buflen), salt_len)); + cp = __php_stpncpy(cp, salt, MIN((size_t) MAX(0, buflen), salt_len)); buflen -= (int) MIN((size_t) MAX(0, buflen), salt_len); if (buflen > 0) { Modified: php/php-src/trunk/ext/standard/crypt_sha256.c =================================================================== --- php/php-src/trunk/ext/standard/crypt_sha256.c 2009-12-11 15:42:16 UTC (rev 291992) +++ php/php-src/trunk/ext/standard/crypt_sha256.c 2009-12-11 15:57:01 UTC (rev 291993) @@ -40,8 +40,7 @@ # endif #endif -#ifndef HAVE_STRPNCPY -char * stpncpy(char *dst, const char *src, size_t len) +char * __php_stpncpy(char *dst, const char *src, size_t len) { size_t n = strlen(src); if (n > len) { @@ -49,14 +48,11 @@ } return strncpy(dst, src, len) + n; } -#endif -#ifndef HAVE_MEMPCPY -void * mempcpy(void * dst, const void * src, size_t len) +void * __php_mempcpy(void * dst, const void * src, size_t len) { return (((char *)memcpy(dst, src, len)) + len); } -#endif #ifndef MIN # define MIN(a, b) (((a) < (b)) ? (a) : (b)) @@ -457,7 +453,7 @@ /* Create byte sequence P. */ cp = p_bytes = alloca(key_len); for (cnt = key_len; cnt >= 32; cnt -= 32) { - cp = mempcpy((void *)cp, (const void *)temp_result, 32); + cp = __php_mempcpy((void *)cp, (const void *)temp_result, 32); } memcpy(cp, temp_result, cnt); @@ -475,7 +471,7 @@ /* Create byte sequence S. */ cp = s_bytes = alloca(salt_len); for (cnt = salt_len; cnt >= 32; cnt -= 32) { - cp = mempcpy(cp, temp_result, 32); + cp = __php_mempcpy(cp, temp_result, 32); } memcpy(cp, temp_result, cnt); @@ -515,7 +511,7 @@ /* Now we can construct the result string. It consists of three parts. */ - cp = stpncpy(buffer, sha256_salt_prefix, MAX(0, buflen)); + cp = __php_stpncpy(buffer, sha256_salt_prefix, MAX(0, buflen)); buflen -= sizeof(sha256_salt_prefix) - 1; if (rounds_custom) { @@ -528,7 +524,7 @@ buflen -= n; } - cp = stpncpy(cp, salt, MIN ((size_t) MAX (0, buflen), salt_len)); + cp = __php_stpncpy(cp, salt, MIN ((size_t) MAX (0, buflen), salt_len)); buflen -= MIN((size_t) MAX (0, buflen), salt_len); if (buflen > 0) { Modified: php/php-src/trunk/ext/standard/crypt_sha512.c =================================================================== --- php/php-src/trunk/ext/standard/crypt_sha512.c 2009-12-11 15:42:16 UTC (rev 291992) +++ php/php-src/trunk/ext/standard/crypt_sha512.c 2009-12-11 15:57:01 UTC (rev 291993) @@ -32,21 +32,15 @@ # include <sys/param.h> # include <sys/types.h> # if HAVE_STRING_H -# define __USE_GNU # include <string.h> # else # include <strings.h> # endif #endif -#ifndef HAVE_MEMPCPY -extern void * mempcpy(void * dst, const void * src, size_t len); -#endif +extern void * __php_mempcpy(void * dst, const void * src, size_t len); +extern char * __php_stpncpy(char *dst, const char *src, size_t len); -#ifndef HAVE_STRPNCPY -extern char * stpncpy(char *dst, const char *src, size_t len); -#endif - #ifndef MIN # define MIN(a, b) (((a) < (b)) ? (a) : (b)) #endif @@ -488,7 +482,7 @@ /* Create byte sequence P. */ cp = p_bytes = alloca(key_len); for (cnt = key_len; cnt >= 64; cnt -= 64) { - cp = mempcpy((void *) cp, (const void *)temp_result, 64); + cp = __php_mempcpy((void *) cp, (const void *)temp_result, 64); } memcpy(cp, temp_result, cnt); @@ -507,7 +501,7 @@ /* Create byte sequence S. */ cp = s_bytes = alloca(salt_len); for (cnt = salt_len; cnt >= 64; cnt -= 64) { - cp = mempcpy(cp, temp_result, 64); + cp = __php_mempcpy(cp, temp_result, 64); } memcpy(cp, temp_result, cnt); @@ -547,7 +541,7 @@ /* Now we can construct the result string. It consists of three parts. */ - cp = stpncpy(buffer, sha512_salt_prefix, MAX(0, buflen)); + cp = __php_stpncpy(buffer, sha512_salt_prefix, MAX(0, buflen)); buflen -= sizeof(sha512_salt_prefix) - 1; if (rounds_custom) { @@ -560,7 +554,7 @@ buflen -= n; } - cp = stpncpy(cp, salt, MIN((size_t) MAX(0, buflen), salt_len)); + cp = __php_stpncpy(cp, salt, MIN((size_t) MAX(0, buflen), salt_len)); buflen -= (int) MIN((size_t) MAX(0, buflen), salt_len); if (buflen > 0) {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php