I understand. The change looks fine.

Tony

On 2/19/19 10:32 PM, Xuelei Fan wrote:


On Feb 19, 2019, at 10:06 PM, Anthony Scarpino <[email protected]> 
wrote:

On 2/19/19 9:38 PM, Xuelei Fan wrote:
Hi Tony or Jamil,
Would you please review the following update:
    http://cr.openjdk.java.net/~xuelei/8219389/webrev.00/
BufferUnderflowException might be thrown if the record format does not confirm 
to the formal protocol syntax. The original bug was reported for the 
ClientHello handshake message, and was fixed in JDK-8215790.  I made an 
enhancement so that more handshake messages buffer operating RuntimeException 
could be handled properly.
Thanks,
Xuelei

I'm not saying your approach is incorrect, but I have to wonder if this is too 
generic.  Are you trying to catch situations other than RandomCookie throwing 
an exception?
Yes, it is for cases other than RandomCookie.  Every call to ByteBuffer.get() 
could throw BUFE unless the length get checked.  The impl code did not always 
check the buffer length before calling the get() method.

The issues happens only when the record format does not comply to the protocol 
syntax.  For example, the record length is 5, but the content only have 1 byte.

We can fix these issues with two approaches: checking the buffer length before 
call get() and put(); or catch the exception in a general way.

RandomCookie is only in ClientHello and ServerHello, so PostHandshakeContext 
doesn't look necessary.

If we need a generic catch all consumed extensions, why not just have it catch 
"Exception" and run fatal.
I did not get the point.  It is not the purpose to catch all consumed 
exceptions, some of which could have been handled.

This could eliminate many of the current fatal calls in the code and centralize 
the SSLException messages in these two files.  Assuming I understand the idea 
around this change correctly.

We can go with checking the buffer length before each call to get(), which 
means we need to update a lot of code, and make no missing and mistakes.  Using 
a centralized way is more robust as if we missed somewhere in the handshake 
message operations like the ClientHello case.

I’m not sure I get the point about the elimination of fatal calls.  I think it 
is still needed to check the buffer length as soon as possible instead of 
depending on the two lazy centralized catch, which is used just in case the 
checking is missed somehow.

Thanks,
Xuelei

Tony


Reply via email to