[tor-bugs] #23061 [Core Tor/Tor]: crypto_rand_double() should produce all possible outputs on 32-bit platforms

Tor Bug Tracker & Wiki blackhole at torproject.org
Mon Jul 31 05:09:58 UTC 2017


#23061: crypto_rand_double() should produce all possible outputs on 32-bit
platforms
------------------------------------------------+--------------------------
 Reporter:  teor                                |          Owner:
     Type:  defect                              |         Status:  new
 Priority:  Medium                              |      Milestone:  Tor:
                                                |  0.3.2.x-final
Component:  Core Tor/Tor                        |        Version:  Tor:
                                                |  0.2.2.14-alpha
 Severity:  Normal                              |     Resolution:
 Keywords:  tor-relay, security-low, privcount  |  Actual Points:
Parent ID:                                      |         Points:  0.1
 Reviewer:                                      |        Sponsor:  SponsorQ
------------------------------------------------+--------------------------

Comment (by teor):

 Turns out that we only get 32 bits of random mantissa on 64-bit, so fixing
 this bug might be harder than I thought:
 {{{
   /* Test for regression to bug 23061, where we produced excessively
 granular
    * random double values. */
   int low_bits_zero_count = 0;
   do {
     /* First check the value is within the range */
     d = crypto_rand_double();
     tt_assert(d >= 0);
     tt_assert(d < 1.0);
     /* Now check the granularity, by finding the last bit of the result.
      * doubles have a 53 bit mantissa. */
     d *= pow(2, 32);
     d -= trunc(d);
     low_bits_zero_count++;
     /* If the granularity is correct, this will fail with probability
      * 1 in 2**100, which is approximately the RAM bit error rate. */
     tt_assert(low_bits_zero_count <= 100);
   } while (d == 0.0);
 }}}

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/23061#comment:2>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list