summaryrefslogtreecommitdiffstats
path: root/ssl
diff options
context:
space:
mode:
authorBernd Edlinger <bernd.edlinger@hotmail.de>2018-02-09 18:09:59 +0100
committerBernd Edlinger <bernd.edlinger@hotmail.de>2018-02-09 19:54:03 +0100
commit5a91d3888832d96400630e76a15121ead56aeeec (patch)
tree4385321dae70df65528c21ce543c1502e0614a8d /ssl
parent622ddb57798bb5c895b0fe40e3fd89fdb4cdbc65 (diff)
Swap the check in ssl3_write_pending to avoid using
the possibly indeterminate pointer value in wpend_buf. Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/5307)
Diffstat (limited to 'ssl')
-rw-r--r--ssl/record/rec_layer_s3.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/ssl/record/rec_layer_s3.c b/ssl/record/rec_layer_s3.c
index 3a0ed744ab..3cfefb3f0f 100644
--- a/ssl/record/rec_layer_s3.c
+++ b/ssl/record/rec_layer_s3.c
@@ -894,10 +894,9 @@ int ssl3_write_pending(SSL *s, int type, const unsigned char *buf,
SSL3_BUFFER *wb = s->rlayer.wbuf;
unsigned int currbuf = 0;
-/* XXXX */
if ((s->rlayer.wpend_tot > (int)len)
- || ((s->rlayer.wpend_buf != buf) &&
- !(s->mode & SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER))
+ || (!(s->mode & SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER)
+ && (s->rlayer.wpend_buf != buf))
|| (s->rlayer.wpend_type != type)) {
SSLerr(SSL_F_SSL3_WRITE_PENDING, SSL_R_BAD_WRITE_RETRY);
return (-1);