RFR 8157318: ThreadedSeedGenerator uses System.currentTimeMillis and stops generating when time is set back

David M. Lloyd david.lloyd at redhat.com
Wed Jun 15 22:37:34 UTC 2016


This will not work because System.nanoTime() can be negative and wrap 
around.  You can't compare one nanoTime to another, only differences are 
useful.

On 06/15/2016 05:30 PM, Bradford Wetmore wrote:
> Looks good, Max, thanks for taking this over.
>
> Xuelei, it's a threaded accumulator, which feeds into the seed
> generator.  We wait a certain amount of time before generating the values.
>
> Brad
>
>
> On 6/15/2016 5:07 AM, Xuelei Fan wrote:
>> I'm not sure I understand the while loop.  But this update looks fine to
>> me as it does not change the logic of the code except to use elapsed
>> time.
>>
>> Xuelei
>>
>> On 6/15/2016 11:12 AM, Wang Weijun wrote:
>>> Please take a review on the patch
>>>
>>> diff --git
>>> a/src/java.base/share/classes/sun/security/provider/SeedGenerator.java b/src/java.base/share/classes/sun/security/provider/SeedGenerator.java
>>>
>>> ---
>>> a/src/java.base/share/classes/sun/security/provider/SeedGenerator.java
>>> +++
>>> b/src/java.base/share/classes/sun/security/provider/SeedGenerator.java
>>> @@ -354,8 +354,8 @@
>>>                          // We wait 250milli quanta, so the minimum
>>> wait time
>>>                          // cannot be under 250milli.
>>>                          int latch = 0;
>>> -                        long l = System.currentTimeMillis() + 250;
>>> -                        while (System.currentTimeMillis() < l) {
>>> +                        long l = System.nanoTime() + 250000000;
>>> +                        while (System.nanoTime() < l) {
>>>                              synchronized(this){};
>>>                              latch++;
>>>                          }
>>>
>>> nanoTime() is for elapsed time and should be used here.
>>>
>>> Thanks
>>> Max
>>>
>>

-- 
- DML



More information about the security-dev mailing list