summaryrefslogtreecommitdiff
path: root/ext/standard/crypt.c
diff options
context:
space:
mode:
authorfoobar <sniper@php.net>2003-08-11 00:49:19 +0000
committerfoobar <sniper@php.net>2003-08-11 00:49:19 +0000
commitebec2bb85993cdcfb5f4247f4d52f2d282f50b63 (patch)
treeb479dc3dd36dc2e970add4d756a4c861ae6b6154 /ext/standard/crypt.c
parente1accb81c086295f4c95686736eebb9411bd2b54 (diff)
downloadphp-git-ebec2bb85993cdcfb5f4247f4d52f2d282f50b63.tar.gz
Moved the RINIT(crypt) stuff into crypt() itself.
Diffstat (limited to 'ext/standard/crypt.c')
-rw-r--r--ext/standard/crypt.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/ext/standard/crypt.c b/ext/standard/crypt.c
index 45559e5484..0844e34679 100644
--- a/ext/standard/crypt.c
+++ b/ext/standard/crypt.c
@@ -89,8 +89,6 @@ extern char *crypt(char *__key, char *__salt);
#define PHP_CRYPT_RAND php_rand(TSRMLS_C)
-static int php_crypt_rand_seeded=0;
-
PHP_MINIT_FUNCTION(crypt)
{
REGISTER_LONG_CONSTANT("CRYPT_SALT_LENGTH", PHP_MAX_SALT_LEN, CONST_CS | CONST_PERSISTENT);
@@ -103,16 +101,6 @@ PHP_MINIT_FUNCTION(crypt)
}
-PHP_RINIT_FUNCTION(crypt)
-{
- if(!php_crypt_rand_seeded) {
- php_srand(time(0) * getpid() * (unsigned long) (php_combined_lcg(TSRMLS_C) * 10000.0) TSRMLS_CC);
- php_crypt_rand_seeded=1;
- }
- return SUCCESS;
-}
-
-
static unsigned char itoa64[] = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
static void php_to64(char *s, long v, int n)
@@ -131,6 +119,10 @@ PHP_FUNCTION(crypt)
char *str, *salt_in = NULL;
int str_len, salt_in_len;
+ if (!BG(rand_is_seeded)) {
+ php_srand(GENERATE_SEED() TSRMLS_CC);
+ }
+
salt[0]=salt[PHP_MAX_SALT_LEN]='\0';
/* This will produce suitable results if people depend on DES-encryption
available (passing always 2-character salt). At least for glibc6.1 */