Swap the check in ssl3_write_pending to avoid using
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Fri, 9 Feb 2018 16:19:50 +0000 (17:19 +0100)
committerBernd Edlinger <bernd.edlinger@hotmail.de>
Fri, 9 Feb 2018 18:52:31 +0000 (19:52 +0100)
the possibly indeterminate pointer value in wpend_buf.

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5305)

ssl/record/rec_layer_s3.c

index 24e260e..fbb7461 100644 (file)
@@ -1115,8 +1115,8 @@ int ssl3_write_pending(SSL *s, int type, const unsigned char *buf, size_t len,
     size_t tmpwrit = 0;
 
     if ((s->rlayer.wpend_tot > 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)) {
         SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL3_WRITE_PENDING,
                  SSL_R_BAD_WRITE_RETRY);