misc/rand.c: cleanup and fix a stupid bug
authorDamien Fouilleul <damienf@videolan.org>
Mon, 3 Sep 2007 15:14:44 +0000 (15:14 +0000)
committerDamien Fouilleul <damienf@videolan.org>
Mon, 3 Sep 2007 15:14:44 +0000 (15:14 +0000)
src/misc/rand.c

index b490871..fd6faea 100644 (file)
@@ -123,34 +123,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