On Wed, 14 Sep 2022 18:23:51 GMT, Xue-Lei Andrew Fan <xue...@openjdk.org> wrote:

>> Good point.  Modified to use less checking.
>> 
>> If the key is null, the following condition could bypass the checking, and 
>> result in NPE.
>> 
>> `        if (!MessageDigest.isEqual(key, lastKey)) {
>> `
>> 
>> Although it is unlikely to happen as the caller should has already been 
>> checked that the key cannot be null, but the code logic here is not that 
>> clear to read.  In the new patch, I have the null checking in the init() 
>> method, and the validity checking in the makeSessionKey() method.
>
>> Actually, NM, init still has to call MessageDigest.isEqual so eliminating 
>> keys of invalid length before that is probably more efficient.
> 
> The key should be valid for common cases.  For valid key, it is more 
> efficient to have the checking in makeSessionKey() as there is less checking. 
>  For invalid key, it is more efficient to have the checking before calling 
> MessageDigest.isEqual().  Exception itself is costly, I would prefer to have 
> better performance for common cases (valid key).
> 
> I updated the patch before I read the comment.  Please let me know your 
> preference.  I'm fine to rollback if you prefer the old patch.

> If the key is null, the following condition could bypass the checking, and 
> result in NPE.
> 
> ` if (!MessageDigest.isEqual(key, lastKey)) {`
> 
> Although it is unlikely to happen as the caller should has already been 
> checked that the key cannot be null, but the code logic here is not that 
> clear to read. In the new patch, I have the null checking in the init() 
> method, and the validity checking in the makeSessionKey() method.

I agree, the provider layer should have rejected a null `Key` or a null 
`Key.getEncoded` prior to this, but best to not change what this code 
previously did (at least not for this change).

-------------

PR: https://git.openjdk.org/jdk/pull/10263

Reply via email to