RFR: JDK-8243376: java.net.SocketPermission.implies(Permission p) spec is mismatching with implementation [v9]
Pushkar N Kulkarni
duke at openjdk.java.net
Mon Jan 10 09:42:38 UTC 2022
On Wed, 10 Mar 2021 17:32:30 GMT, Jayashree S Kumar <duke at openjdk.java.net> wrote:
>> Issue
>>
>> https://bugs.openjdk.java.net/browse/JDK-8243376
>>
>> Problem
>>
>> The scenario is:
>> - Some specified target hostname resolves to two IP addresses (always the same address pair).
>> - The DNS resolved order of the two ip addresses changes (a usual LoadBalancer type behavior).
>> - The CNAME of the two ip addresses differ.
>>
>> In SocketPermission class(void getIP() method), it internally resolves and saves only the first IP address resolved, not all the IP addresses resolved.
>> - Depending on when the implier/implied SocketPermission hostname is resolved, the resolved addresses order differs, and the internally saved IP address mismatches, resulting on SocketPermission#implies() false.
>>
>>
>> Michael McMahon kindly reviewed and suggested changes: https://mail.openjdk.java.net/pipermail/net-dev/2020-May/014001.html
>
> Jayashree S Kumar has updated the pull request incrementally with one additional commit since the last revision:
>
> Jcheck Review: Corrected the tab error
@jaysk1 Thanks for this PR! I've left some questions inline.
src/java.base/share/classes/java/net/SocketPermission.java line 1090:
> 1088:
> 1089: if (this.cnames != null) {
> 1090: return this.cnames[0].equalsIgnoreCase(that.cnames[0]);
@jaysk1 Can this comparison fail for SocketPermission objects that have multiple cname entries in different orders?
src/java.base/share/classes/java/net/SocketPermission.java line 1123:
> 1121: return this.getName().hashCode();
> 1122: else
> 1123: return this.cnames[0].hashCode();
@jaysk1 Can this cause "equal" `SocketPermission` objects with the identical, multiple cname entries, but in a different order, to have unequal hash codes?
test/jdk/java/net/SocketPermission/SocketPermissionIm.java line 26:
> 24: break;
> 25: }
> 26: addIpToHostsFile(hostname, "1.2.3."+testPass, hostsFileName);
nit: Looks like these needs an indentation correction.
test/jdk/java/net/SocketPermission/SocketPermissionIm.java line 34:
> 32: private static void addIpToHostsFile(String host, String addr, String hostsFileName)
> 33: throws Exception {
> 34: String mapping = addr + " " + host;
nit: indentation?
-------------
Changes requested by pushkarnk at github.com (no known OpenJDK username).
PR: https://git.openjdk.java.net/jdk/pull/1916
More information about the net-dev
mailing list