]> Sergey Matveev's repositories - dht-bootstrap.git/commitdiff
Use simpler arc4random instead of /dev/urandom
authorSergey Matveev <stargrave@stargrave.org>
Thu, 10 Nov 2022 10:37:10 +0000 (13:37 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Thu, 10 Nov 2022 12:03:07 +0000 (15:03 +0300)
CHANGES
dht-bootstrap.c

diff --git a/CHANGES b/CHANGES
index b903e72ed8ebd14fa5b61f8828d6ad9da546207a..1af4ef3d166f1c1195a92ebf8322ddde49942729 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,7 @@
 
   * Ability to explicitly specify IP addresses to bind to
   * select() replaced with poll()
+  * arc4random instead of /dev/urandom reading
 
 20 November 2011: dht-bootstrap-0.2
 
index e98cd6ea6bd5f2e4c9be46d714e6bf54bf56d851..28f3fd26e4281a4b5545a6b50f6a5964bb2113b8 100644 (file)
@@ -354,9 +354,7 @@ send_request(struct circular_list *list, int dopop, int doping, int want)
         return send_ping((struct sockaddr *)&ss, sslen, ttid, 4);
     } else {
         unsigned char id[20];
-        int i;
-        for (i = 0; i < 20; i++)
-            id[i] = random() & 0xFF;
+        arc4random_buf(id, sizeof id);
         make_tid(ttid, "fn", 0);
         debugf("Sending find_node.\n");
         return send_find_node((struct sockaddr *)&ss, sslen, ttid, 4, id, want);
@@ -442,26 +440,7 @@ main(int argc, char **argv)
         dht_socket6 = newSock(ipv6addr, port);
     }
 
-    int rc = 0;
-    {
-        int fd = open("/dev/urandom", O_RDONLY);
-        if (fd < 0) {
-            perror("open(random)");
-            exit(1);
-        }
-
-        rc = read(fd, myid, 20);
-        if (rc < 20) {
-            perror("open(random)");
-            exit(1);
-        }
-
-        unsigned int seed;
-        rc = read(fd, &seed, sizeof(seed));
-        srandom(seed);
-
-        close(fd);
-    }
+    arc4random_buf(myid, sizeof myid);
 
     memcpy(my_v, "1:v4:JB\0\0", 9);
     have_v = 1;
@@ -469,6 +448,7 @@ main(int argc, char **argv)
     if (!quiet)
         dht_debug = stdout;
 
+    int rc = 0;
     unsigned char ttid[4];
 
     while (i < argc) {