boringssl/ssl
David Benjamin c6722cd6e0 Check SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER before touching wpend_buf.
SSL_write has messy semantics around retries. As a sanity-check, it does
pointer and length checks and requires the original and retry SSL_write
pass the same buffer pointer.

In some cases, buffer addresses may change but still include the
original data as a prefix on the retry. Callers then set
SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER to skip the pointer check. But, in
that case, the pointer may have been freed so doing a comparison is
undefined behavior.

Short-circuiting the pointer equality check avoids this problem.

Change-Id: I76cb8f7d45533504cd95287bc53897ca636af51d
Reviewed-on: https://boringssl-review.googlesource.com/11760
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
Reviewed-by: Steven Valdez <svaldez@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
2016-10-25 20:15:45 +00:00
..
test Always enable GREASE for TLS 1.3 NewSessionTicket. 2016-10-24 20:04:24 +00:00
CMakeLists.txt Add TLS 1.3 1-RTT. 2016-07-18 09:54:46 +00:00
custom_extensions.c Move extensions bitmasks into SSL_HANDSHAKE. 2016-10-09 16:48:52 +00:00
d1_both.c Take the version parameter out of ssl_do_msg_callback. 2016-09-21 18:55:27 +00:00
d1_lib.c Remove RC4 from TLS for real. 2016-09-16 03:06:36 +00:00
d1_pkt.c Take the version parameter out of ssl_do_msg_callback. 2016-09-21 18:55:27 +00:00
d1_srtp.c Fix ssl_ctx_make_profiles error handling. 2016-09-27 13:27:06 +00:00
dtls_method.c Don't return invalid versions in version_from_wire. 2016-09-21 19:51:45 +00:00
dtls_record.c Take the version parameter out of ssl_do_msg_callback. 2016-09-21 18:55:27 +00:00
handshake_client.c Implement ChannelID for TLS 1.3. 2016-10-20 20:57:10 +00:00
handshake_server.c Implement ChannelID for TLS 1.3. 2016-10-20 20:57:10 +00:00
internal.h Implement ChannelID for TLS 1.3. 2016-10-20 20:57:10 +00:00
s3_both.c Implement draft 16 HelloRetryRequest and cookie. 2016-10-13 19:12:30 +00:00
s3_enc.c Splitting SSL session state. 2016-07-29 21:22:46 +00:00
s3_lib.c Move TLS 1.2 key exchange fields to SSL_HANDSHAKE. 2016-10-09 17:30:32 +00:00
s3_pkt.c Check SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER before touching wpend_buf. 2016-10-25 20:15:45 +00:00
ssl_aead_ctx.c Use C99 for size_t loops. 2016-09-12 19:44:24 +00:00
ssl_asn1.c Updating NewSessionTicket message and updating PSK to Draft 15. 2016-10-06 14:36:12 +00:00
ssl_buffer.c Add SSL_is_dtls. 2016-08-02 20:43:58 +00:00
ssl_cert.c Inline tls1_check_ec_cert. 2016-10-09 17:14:50 +00:00
ssl_cipher.c Add GENERIC selector for TLS 1.3 AEAD-only cipher suites. 2016-10-06 19:37:40 +00:00
ssl_ecdh.c Implement SSL_CTX_set1_curves_list() 2016-09-30 00:45:19 +00:00
ssl_file.c Check for sk_X509_NAME_push failures. 2016-09-27 13:18:37 +00:00
ssl_lib.c Forbid renego in SSL 3.0. 2016-10-09 17:44:54 +00:00
ssl_rsa.c Fix memory leak in set_signing_algorithm_prefs. 2016-10-18 14:13:53 +00:00
ssl_session.c Updating NewSessionTicket message and updating PSK to Draft 15. 2016-10-06 14:36:12 +00:00
ssl_stat.c Add the certificate_required alert. 2016-10-10 15:48:06 +00:00
ssl_test.cc Don't accept {sha1, ecdsa} and {sha512, ecdsa}. 2016-10-18 19:07:36 +00:00
t1_enc.c Splitting SSL session state. 2016-07-29 21:22:46 +00:00
t1_lib.c Use SHA256_CTX instead of EVP_MD_CTX when computing Channel ID. 2016-10-20 21:22:39 +00:00
tls13_both.c Implement ChannelID for TLS 1.3. 2016-10-20 20:57:10 +00:00
tls13_client.c Implement ChannelID for TLS 1.3. 2016-10-20 20:57:10 +00:00
tls13_enc.c Updating Key Schedule and KeyUpdate to draft 16. 2016-10-13 19:12:23 +00:00
tls13_server.c Always enable GREASE for TLS 1.3 NewSessionTicket. 2016-10-24 20:04:24 +00:00
tls_method.c Moving TLS 1.3 version negotiation into extension. 2016-09-27 20:12:22 +00:00
tls_record.c Take the version parameter out of ssl_do_msg_callback. 2016-09-21 18:55:27 +00:00