boringssl/ssl
David Benjamin 5267ef7b4a Reject unexpected application data in bidirectional shutdown.
Update-Note: This tweaks the SSL_shutdown behavior. OpenSSL's original
SSL_shutdown behavior was an incoherent mix of discarding the record and
rejecting it (it would return SSL_ERROR_SYSCALL but retrying the
operation would discard it). SSLeay appears to have intended to discard
it, so we previously "fixed" it actually discard.

However, this behavior is somewhat bizarre and means we skip over
unbounded data, which we typically try to avoid. If you are trying to
cleanly shutdown the TLS portion of your protocol, surely it is at a
point where additional data is a syntax error. I suspect I originally
did not realize that, because the discarded record did not properly
continue the loop, SSL_shutdown would appear as if it rejected the data,
and so it's unlikely anyone was relying on that behavior.

Discussion in https://github.com/openssl/openssl/pull/6340 suggests
(some of) upstream also prefers rejecting.

Change-Id: Icde419049306ed17eb06ce1a7e1ff587901166f3
Reviewed-on: https://boringssl-review.googlesource.com/28864
Commit-Queue: David Benjamin <davidben@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
Reviewed-by: Steven Valdez <svaldez@google.com>
2018-06-04 21:39:58 +00:00
..
test Reject unexpected application data in bidirectional shutdown. 2018-06-04 21:39:58 +00:00
bio_ssl.cc Switch a number of files to C++. 2017-07-12 20:54:02 +00:00
CMakeLists.txt Add initial, experimental support for split handshakes. 2018-01-31 22:24:17 +00:00
custom_extensions.cc Rename ssl3_send_alert and ssl3_protocol_version. 2017-10-12 16:24:35 +00:00
d1_both.cc Fix build with GCC 4.9.2 and -Wtype-limits. 2018-05-08 22:21:45 +00:00
d1_lib.cc Give DTLS1_STATE a destructor. 2017-10-25 03:23:26 +00:00
d1_pkt.cc Make SSL3_BUFFER a proper C++ class. 2017-10-24 17:32:45 +00:00
d1_srtp.cc Move srtp_profiles to SSL_CONFIG. 2018-05-03 15:20:13 +00:00
dtls_method.cc Remove trailing whitespace from ssl/. 2018-02-26 22:05:13 +00:00
dtls_record.cc Use the actual record header, rather than reassembling it. 2018-04-10 19:52:33 +00:00
handoff.cc SSL_apply_handback: check session is where it's expected to be. 2018-05-05 02:25:24 +00:00
handshake_client.cc SSL_CONFIG: new struct for sheddable handshake configuration. 2018-05-01 20:40:16 +00:00
handshake_server.cc Implement legacy OCSP APIs for libssl. 2018-05-11 22:21:26 +00:00
handshake.cc Preliminary support for compressed certificates. 2018-06-04 21:24:20 +00:00
internal.h Preliminary support for compressed certificates. 2018-06-04 21:24:20 +00:00
s3_both.cc Pack encrypted handshake messages together. 2018-05-29 14:28:56 +00:00
s3_lib.cc SSL_CONFIG: new struct for sheddable handshake configuration. 2018-05-01 20:40:16 +00:00
s3_pkt.cc Pack encrypted handshake messages together. 2018-05-29 14:28:56 +00:00
span_test.cc Add bssl::SealRecord and bssl::OpenRecord. 2017-07-24 20:14:08 +00:00
ssl_aead_ctx.cc Use the actual record header, rather than reassembling it. 2018-04-10 19:52:33 +00:00
ssl_asn1.cc Expose ssl_session_serialize to libssl. 2018-01-26 22:31:47 +00:00
ssl_buffer.cc Move init_buf and rwstate into SSL3_STATE. 2017-10-24 18:55:05 +00:00
ssl_cert.cc Const-correct some functions. 2018-05-11 15:10:35 +00:00
ssl_cipher.cc Temporarily restore SHA256 and SHA384 cipher suite aliases. 2018-05-03 15:48:50 +00:00
ssl_file.cc Avoid modifying stack in sk_find. 2018-04-12 21:02:12 +00:00
ssl_key_share.cc Check for nullptr result of SSLKeyShare::Create(). 2018-04-10 22:55:53 +00:00
ssl_lib.cc Reject unexpected application data in bidirectional shutdown. 2018-06-04 21:39:58 +00:00
ssl_privkey.cc SSL_CONFIG: new struct for sheddable handshake configuration. 2018-05-01 20:40:16 +00:00
ssl_session.cc Add SSL_SESSION_set1_id. 2018-06-04 14:25:28 +00:00
ssl_stat.cc Remove trailing whitespace from ssl/. 2018-02-26 22:05:13 +00:00
ssl_test.cc Const-correct some functions. 2018-05-11 15:10:35 +00:00
ssl_transcript.cc Hand back ECDHE split handshakes after the first server message. 2018-04-04 17:58:15 +00:00
ssl_versions.cc Allow enabling all TLS 1.3 variants by setting |tls13_default|. 2018-05-10 20:27:34 +00:00
ssl_x509.cc SSL_CONFIG: new struct for sheddable handshake configuration. 2018-05-01 20:40:16 +00:00
t1_enc.cc Add initial, experimental support for split handshakes. 2018-01-31 22:24:17 +00:00
t1_lib.cc Preliminary support for compressed certificates. 2018-06-04 21:24:20 +00:00
tls13_both.cc Preliminary support for compressed certificates. 2018-06-04 21:24:20 +00:00
tls13_client.cc Enforce supported_versions in the second ServerHello. 2018-05-07 19:05:20 +00:00
tls13_enc.cc Remove draft22 and experiment2. 2018-01-31 18:07:53 +00:00
tls13_server.cc Consistently use session_ctx for session caching. 2018-05-02 20:15:08 +00:00
tls_method.cc Pack encrypted handshake messages together. 2018-05-29 14:28:56 +00:00
tls_record.cc Use the actual record header, rather than reassembling it. 2018-04-10 19:52:33 +00:00