darwinssl: don't use arc4random_buf
authorNick Zitzmann <nick@chronosnet.com>
Sat, 7 Jul 2012 22:03:16 +0000 (16:03 -0600)
committerDaniel Stenberg <daniel@haxx.se>
Sun, 8 Jul 2012 13:42:36 +0000 (15:42 +0200)
Re-wrote Curl_darwinssl_random() to not use arc4random_buf() because the
function is not available prior to iOS 4.3 and OS X 10.7.

lib/curl_darwinssl.c

index 5a2bcf5ff941dd61b7b41f4c1f3ab52fd3ee3341..893a6fc2a5b712f1ccfd2b7f838c54f906d31565 100644 (file)
@@ -835,8 +835,19 @@ void Curl_darwinssl_random(struct SessionHandle *data,
                            unsigned char *entropy,
                            size_t length)
 {
+  /* arc4random_buf() isn't available on cats older than Lion, so let's
+     do this manually for the benefit of the older cats. */
+  size_t i;
+  u_int32_t random = 0;
+
+  for(i = 0 ; i < length ; i++) {
+    if(i % sizeof(u_int32_t) == 0)
+      random = arc4random();
+    entropy[i] = random & 0xFF;
+    random >>= 8;
+  }
+  i = random = 0;
   (void)data;
-  arc4random_buf(entropy, length);
 }
 
 void Curl_darwinssl_md5sum(unsigned char *tmp, /* input */