]> granicus.if.org Git - python/commitdiff
Issue #22181: Fix dev_urandom_noraise(), try calling py_getrandom() before
authorVictor Stinner <victor.stinner@gmail.com>
Thu, 19 Mar 2015 22:24:45 +0000 (23:24 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Thu, 19 Mar 2015 22:24:45 +0000 (23:24 +0100)
opening /dev/urandom.

Python/random.c

index 10fc505e0fa245492e8b4dcbc2e9984c5d562bcd..c924323fdae7f6aba4c9391c7eec40614d5dc987 100644 (file)
@@ -166,10 +166,6 @@ dev_urandom_noraise(unsigned char *buffer, Py_ssize_t size)
 
     assert (0 < size);
 
-    fd = _Py_open_noraise("/dev/urandom", O_RDONLY);
-    if (fd < 0)
-        Py_FatalError("Failed to open /dev/urandom");
-
 #ifdef HAVE_GETRANDOM_SYSCALL
     if (py_getrandom(buffer, size, 0) == 1)
         return;
@@ -177,6 +173,10 @@ dev_urandom_noraise(unsigned char *buffer, Py_ssize_t size)
      * on reading /dev/urandom */
 #endif
 
+    fd = _Py_open_noraise("/dev/urandom", O_RDONLY);
+    if (fd < 0)
+        Py_FatalError("Failed to open /dev/urandom");
+
     while (0 < size)
     {
         do {