RFR[8230946]: Clarify security manager behaviour of a connected DatagramSocket and DatagramChannel

Chris Hegarty chris.hegarty at oracle.com
Mon Sep 30 15:45:29 UTC 2019


On 30/09/2019 15:27, Alan Bateman wrote:
> On 30/09/2019 15:10, Patrick Concannon wrote:
>> Hi Alan,
>>
>>
>> A new issue has been created as requested, and can be found here: 
>> https://bugs.openjdk.java.net/browse/JDK-8231570
> In JDK-8231570, I think Chris is concerned that a custom SM will 
> observe, and may prevent, send/receive from binding where as an implicit 
> bind by connect is not observed by the SM. It will not be wrong for the 
> binding in connect to go through the SM too.

One could reasonably write a test that connects an unbound channel, and 
expect that SM::checkListen is invoked.

My intention was to use 8231570, in part, to examine the` @throws 
SecurityException` for receive. ( as well as what was mentioned above )


> The related issue that we touched on here is that 
> DatagramChannel.receive does not specify that it discards datagrams when 
> denied by the SM. I think we will need to adjust the wording for the 
> SecurityException.

DatagramChannel::receive has the following @throws:

      * @throws  SecurityException
      *          If a security manager has been installed
      *          and it does not permit datagrams to be accepted
      *          from the datagram's sender

This is incorrect.

The specification should say that denied datagram packets will be 
discarded **.

The only possible "fix" here, ignoring implicit bind since that will be 
handled by 8231570, is to remove the @throws ( as well as adding some 
spec verbiage, which is already implicit through the link to 
DatagramSocket ). But it might be prudent to not remove @throws yet, 
given 8231570 is still unresolved. 8231570 can be used to "fix" the 
@throws, to either 1) remove it, or 2) modify it to say that the bind 
may throw.

I don't have a strong opinion either way which JIRA issue is used for 
which parts of the change, just that the changes happen without removing 
and re-adding an @throws

-Chris.

** If registered with a selector for OP_READ, after waking up that 
selector then discarding the datagram.


More information about the nio-dev mailing list