This commit is contained in:
Anatol Belski 2017-02-12 19:15:40 +01:00
parent d53d0a5dc4
commit 97d620449c

View File

@ -84,7 +84,6 @@ BOOL php_win32_init_random_bytes(void)
PHP_WINUTIL_API int php_win32_get_random_bytes(unsigned char *buf, size_t size) { /* {{{ */
BOOL ret;
size_t got = 0;
#if 0
/* Currently we fail on startup, with CNG API it shows no regressions so far and is secure.
@ -96,18 +95,21 @@ PHP_WINUTIL_API int php_win32_get_random_bytes(unsigned char *buf, size_t size)
#endif
#if ZEND_ENABLE_ZVAL_LONG64
BOOL call_ret;
size_t got = 0;
do {
ULONG to_read = (ULONG)(size - got);
ret = ret && NT_SUCCESS(BCryptGenRandom(bcrypt_algo, buf, to_read, 0));
if (ret) {
call_ret = NT_SUCCESS(BCryptGenRandom(bcrypt_algo, buf, to_read, 0));
if (call_ret) {
got += to_read;
buf += to_read;
}
} while (ret && got < size);
} while (call_ret && got < size);
ret = (got == size);
#else
ret = NT_SUCCESS(BCryptGenRandom(bcrypt_algo, buf, size, 0));
#endif
assert(got == size);
return ret ? SUCCESS : FAILURE;
}