On Thu, 17 Jul 2025 14:08:57 GMT, Sean Mullan <mul...@openjdk.org> wrote:

>> src/java.base/share/classes/java/security/CodeSource.java line 287:
>> 
>>> 285:      *           one of <i>codesource</i>'s IP addresses or this 
>>> object's
>>> 286:      *           canonical host name must equal <i>codesource</i>'s 
>>> canonical
>>> 287:      *           host name.
>> 
>> Hello Sean, the original text in `SocketPermission.implies()` lists these 2 
>> rules separately, as follows:
>> 
>>>
>>> <li>If this object was not initialized with a single IP address, and one of 
>>> this object's IP addresses equals one of <i>p</i>'s IP addresses.
>>>
>>> <li>If this canonical name equals <i>p</i>'s canonical name.
>> 
>> Given that we state at the beginning of this text that `the following checks 
>> are made in order:`, do you think we should continue to list these 2 rules 
>> separately, in that order, instead of combining them into one, like what's 
>> being proposed here?
>
>> Hello Sean, the original text in `SocketPermission.implies()` lists these 2 
>> rules separately, as follows:
>> 
>> > <li>If this object was not initialized with a single IP address, and one 
>> > of this object's IP addresses equals one of p's IP addresses.
>> > <li>If this canonical name equals p's canonical name.
>> 
>> Given that we state at the beginning of this text that `the following checks 
>> are made in order:`, do you think we should continue to list these 2 rules 
>> separately, in that order, instead of combining them into one, like what's 
>> being proposed here?
> 
> This one was a little tricky. `CodeSource.implies` states the following at 
> the beginning:
> 
> "More specifically, this method makes the following checks. If any fail, it 
> returns false. If they all succeed, it returns true."
> 
> That logic made sense prior to this fix because the rule said:
> 
> "If this object's host (getLocation().getHost()) is not null, then the 
> SocketPermission constructed with this object's host must imply the 
> SocketPermission constructed with codesource's host."
> 
> But if I just copy over the relevant conditions as-is from 
> `SocketPermission.implies`, the last two conditions are not logically the 
> same:
> 
> - If this object was not initialized with a single IP address, and one of 
> this object's IP addresses equals one of p's IP addresses.
> - If this canonical name equals p's canonical name. 
> 
> If the first condition fails above, it doesn't bail out and return false, 
> instead it checks the last condition. So this is why I combined those two 
> conditions and added an "or".
> 
> Let me know if this makes sense or if you think there is a better way to word 
> this.

After you mentioned this detail, I read this doc in its entirety. Would 
something like the following be a bit more clear:



*     <li>  If this object's host (getLocation().getHost()) is not null,
*           then the following checks are made in that order and if any
*           of these checks are satisfied, then return true:
*           <ol>
*           <li> If this object's host was initialized with a single IP
*           address then one of <i>codesource</i>'s IP addresses must be
*           equal to this object's IP address.
*           <li> If this object's host is a wildcard domain (such as
*           *.example.com), then <i>codesource</i>'s canonical host name
*           (the name without any preceding *) must end with this object's
*           canonical host name. For example, *.example.com implies
*           *.foo.example.com.
*           <li> If this object's host was not initialized with a single
*           IP address, then one of this object's IP addresses must equal
*           one of <i>codesource</i>'s IP addresses.
*           <li> This object's canonical host name must equal 
<i>codesource</i>'s
*           canonical host name.




Also note that, in the above text I used `<ol>` instead of `<ul>` to show the 
ordering intent. However, if the use of `<ul>` was intentional for better 
rendering, then that's fine too.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/26300#discussion_r2213764079

Reply via email to