From: Rich Salz Date: Tue, 11 Apr 2017 16:11:34 +0000 (-0400) Subject: Additional check to handle BAD SSL_write retry X-Git-Tag: OpenSSL_1_1_0f~77 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6302d9373829ff37c257d93f8566f2272968d67d;p=openssl Additional check to handle BAD SSL_write retry Reviewed-by: Matt Caswell Reviewed-by: Rich Salz (Merged from https://github.com/openssl/openssl/pull/3123) --- diff --git a/ssl/record/rec_layer_s3.c b/ssl/record/rec_layer_s3.c index 2f105a4c4d..c533bbd73a 100644 --- a/ssl/record/rec_layer_s3.c +++ b/ssl/record/rec_layer_s3.c @@ -368,7 +368,8 @@ int ssl3_write_bytes(SSL *s, int type, const void *buf_, int len) * promptly send beyond the end of the users buffer ... so we trap and * report the error in a way the user will notice */ - if ((unsigned int)len < s->rlayer.wnum) { + if (((unsigned int)len < s->rlayer.wnum) + || ((wb->left != 0) && ((unsigned int)len < (s->rlayer.wnum + s->rlayer.wpend_tot)))) { SSLerr(SSL_F_SSL3_WRITE_BYTES, SSL_R_BAD_LENGTH); return -1; }