From 887bd502d2f2052816adbb21be254b254ad8d9a0 Mon Sep 17 00:00:00 2001 From: Paul Bakker Date: Wed, 8 Jun 2011 13:10:54 +0000 Subject: [PATCH] - Undid fix for ssl_write that introduced a true bug when buffers are running full. --- ChangeLog | 5 +++++ library/ssl_tls.c | 24 +++++++++++++----------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index cd054c197..0ba460528 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ PolarSSL ChangeLog += Version trunk +Bugfix + * Undid faulty bug fix in ssl_write() when flushing old data (Ticket + #18) + = Version 0.99-pre5 released on 2011-05-26 Features * Added additional Cipher Block Modes to symmetric ciphers diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 47723cce8..7f82fa0a1 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -2164,6 +2164,9 @@ int ssl_write( ssl_context *ssl, const unsigned char *buf, size_t len ) } } + n = ( len < SSL_MAX_CONTENT_LEN ) + ? len : SSL_MAX_CONTENT_LEN; + if( ssl->out_left != 0 ) { if( ( ret = ssl_flush_output( ssl ) ) != 0 ) @@ -2172,18 +2175,17 @@ int ssl_write( ssl_context *ssl, const unsigned char *buf, size_t len ) return( ret ); } } - - n = ( len < SSL_MAX_CONTENT_LEN ) - ? len : SSL_MAX_CONTENT_LEN; - - ssl->out_msglen = n; - ssl->out_msgtype = SSL_MSG_APPLICATION_DATA; - memcpy( ssl->out_msg, buf, n ); - - if( ( ret = ssl_write_record( ssl ) ) != 0 ) + else { - SSL_DEBUG_RET( 1, "ssl_write_record", ret ); - return( ret ); + ssl->out_msglen = n; + ssl->out_msgtype = SSL_MSG_APPLICATION_DATA; + memcpy( ssl->out_msg, buf, n ); + + if( ( ret = ssl_write_record( ssl ) ) != 0 ) + { + SSL_DEBUG_RET( 1, "ssl_write_record", ret ); + return( ret ); + } } SSL_DEBUG_MSG( 2, ( "<= write" ) );