RFR: 8238566: java.security.Provider$Service.supportsParameter() is racy

Valerie Peng valerie.peng at oracle.com
Thu Mar 12 21:49:14 UTC 2020


No problem, thanks for double checking. ;)

Valerie

On 3/12/2020 4:42 AM, Daniel Fuchs wrote:
> Hi Valerie,
>
> Please ignore my comment. Sorry for the noise.
> I somehow clicked on the wrong webrev link :-(
>
> best regards,
>
> -- daniel
>
> On 12/03/2020 11:35, Daniel Fuchs wrote:
>> Hi Valerie,
>>
>> Given that hasKeyAttributes is already decelared as volatile,
>> may I suggest the following change that uses double locking?
>> It will  avoid synchronizing in the happy case where `hasKeyAttributes`
>> has already been computed.
>>
>> 1924         private boolean hasKeyAttributes() {
>> 1925             Boolean b = hasKeyAttributes;
>>                   if (b != null) return b;
>>                   synchronized (this) {
>>                       b = hasKeyAttributes;
>> 1926                 if (b != null) return b;
>> 1927                 String s;
>> 1928                 s = getAttribute("SupportedKeyFormats");
>>
>>                       ...
>>
>> 1948                 hasKeyAttributes = b;
>> 1949             }
>> 1950             return b;
>> 1951         }
>>
>>
>> best regards,
>>
>> -- daniel
>>
>> On 11/03/2020 20:31, Valerie Peng wrote:
>>>
>>> Anyone can help reviewing this?
>>>
>>> I addressed this by applying the double-checked-locking pattern for 
>>> lazy initialization of instance fields.
>>>
>>> Existing code already have most of the code structured for the 
>>> pattern but misses the second check.
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8238566
>>>
>>> Webrev: http://cr.openjdk.java.net/~valeriep/8238566/webrev.00/
>>>
>>> Thanks,
>>>
>>> Valerie
>



More information about the security-dev mailing list