X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmisc%2Frand.c;h=81bc1850b3300b7466009659dc1301aa538b7bc1;hb=1750723d84703a661be20e0248ada01f973979bd;hp=b49087171ab086cd561773ba2a07a5a809daf601;hpb=8a0b8bd8d22cf77b80e370fb018b45946002e2fe;p=vlc diff --git a/src/misc/rand.c b/src/misc/rand.c index b49087171a..81bc1850b3 100644 --- a/src/misc/rand.c +++ b/src/misc/rand.c @@ -19,7 +19,11 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ -#include +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include #include #ifndef WIN32 @@ -123,34 +127,36 @@ void vlc_rand_bytes (void *buf, size_t len) { HCRYPTPROV hProv; size_t count = len; + uint8_t *p_buf = (uint8_t *)buf; /* fill buffer with pseudo-random data */ while (count > 0) { unsigned int val; - val = rand(); - if (count < sizeof (val)) - { - memcpy (buf, &val, count); - break; - } - - memcpy (buf, &val, sizeof (val)); - count -= sizeof (val); + val = rand(); + if (count < sizeof (val)) + { + memcpy (p_buf, &val, count); + break; + } + + memcpy (p_buf, &val, sizeof (val)); + count -= sizeof (val); + p_buf += sizeof (val); } /* acquire default encryption context */ if( CryptAcquireContext( - &hProv, // Variable to hold returned handle. - NULL, // Use default key container. - MS_DEF_PROV, // Use default CSP. - PROV_RSA_FULL, // Type of provider to acquire. - 0) ) + &hProv, // Variable to hold returned handle. + NULL, // Use default key container. + MS_DEF_PROV, // Use default CSP. + PROV_RSA_FULL, // Type of provider to acquire. + 0) ) { /* fill buffer with pseudo-random data, intial buffer content - is used as auxillary random seed */ + is used as auxillary random seed */ CryptGenRandom(hProv, len, buf); - CryptReleaseContext(hProv, 0); + CryptReleaseContext(hProv, 0); } } #endif