RFR: 8345139: Fix bugs and inconsistencies in the Provider services map [v5]
Martin Balao
mbalao at openjdk.org
Wed Apr 2 20:53:53 UTC 2025
On Mon, 3 Mar 2025 23:24:29 GMT, Valerie Peng <valeriep at openjdk.org> wrote:
>> Francisco Ferrari Bihurriet has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Clear ServicesMap fields in the declared order
>>
>> Constructors assign the fields in the same order.
>
> src/java.base/share/classes/java/security/Provider.java line 713:
>
>> 711: */
>> 712: private record MappingInfo(Service svc, ServiceKey algKey,
>> 713: Boolean isLegacy) {}
>
> There is comment states that `isLegacy` may be null, but then I also see a few if-cond using `isLegacy` directly like its a boolean, wouldn't it lead to NPE if `isLegacy` is `null`?
`isLegacy` is null when the service was never added to the ServicesMap and the Current vs. Legacy API question does not apply. In these cases, the `MappingInfo` record returned by `find` has a null service too, indicating that the query did not find the service. For a caller, this case reads as the `isLegacy` value of a not found service, and will be ignored. You can check how all uses of `<mapping-info>.isLegacy` are in a conditional block where `<mapping-info>.svc` is not null or in a method where we have that pre-condition.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/22613#discussion_r2025577715
More information about the security-dev
mailing list