diff options
| author | Pierre Joye <pajoye@php.net> | 2010-06-08 13:46:19 +0000 |
|---|---|---|
| committer | Pierre Joye <pajoye@php.net> | 2010-06-08 13:46:19 +0000 |
| commit | bfe51d38951b6c110ab02280fa87dac9e81dda70 (patch) | |
| tree | 2dc97e0fd09d701746e76e009bb80c4b0a025379 /ext/session/session.c | |
| parent | dd73c48d570f0ebe9c5873613d5e6913faa53fd1 (diff) | |
| download | php-git-bfe51d38951b6c110ab02280fa87dac9e81dda70.tar.gz | |
- [DOC] add session.entropy* support to windows
Diffstat (limited to 'ext/session/session.c')
| -rw-r--r-- | ext/session/session.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/ext/session/session.c b/ext/session/session.c index 289efa9493..843941a1dd 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -26,9 +26,10 @@ #include "php.h" #ifdef PHP_WIN32 -#include "win32/time.h" +# include "win32/winutil.h" +# include "win32/time.h" #else -#include <sys/time.h> +# include <sys/time.h> #endif #include <sys/stat.h> @@ -328,6 +329,28 @@ PHPAPI char *php_session_create_id(PS_CREATE_SID_ARGS) /* {{{ */ efree(buf); if (PS(entropy_length) > 0) { + unsigned char rbuf[2048]; + +#ifdef PHP_WIN32 + size_t toread = PS(entropy_length); + __debugbreak(); + if (php_win32_get_random_bytes(rbuf, (size_t) toread) == SUCCESS){ + + switch (PS(hash_func)) { + case PS_HASH_FUNC_MD5: + PHP_MD5Update(&md5_context, rbuf, toread); + break; + case PS_HASH_FUNC_SHA1: + PHP_SHA1Update(&sha1_context, rbuf, toread); + break; +# if defined(HAVE_HASH_EXT) && !defined(COMPILE_DL_HASH) + case PS_HASH_FUNC_OTHER: + PS(hash_ops)->hash_update(hash_context, rbuf, toread); + break; +# endif /* HAVE_HASH_EXT */ + } + } +#else int fd; fd = VCWD_OPEN(PS(entropy_file), O_RDONLY); @@ -357,6 +380,7 @@ PHPAPI char *php_session_create_id(PS_CREATE_SID_ARGS) /* {{{ */ } close(fd); } +#endif } digest = emalloc(digest_len + 1); |
