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