Backport 2.1:Add guard to out_left to avoid negative values

return error when f_send return a value greater than out_left
diff --git a/ChangeLog b/ChangeLog
index cf6331f..a02f6df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,8 +11,14 @@
      with flag MBEDTLS_X509_BADCERT_BAD_PK even when the key type was correct.
      In the context of SSL, this resulted in handshake failure. #1351
 
+Changes
+   * Add guard to validate that out_left can not be negative. Raised by 
+     samoconnor in #1245.
+
+
 = mbed TLS 2.1.10 branch released 2018-02-03
 
+
 Security
    * Fix a heap corruption issue in the implementation of the truncated HMAC
      extension. When the truncated HMAC extension is enabled and CBC is used,
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 7193809..7f51bee 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -2449,6 +2449,12 @@
         if( ret <= 0 )
             return( ret );
 
+        if( (size_t)ret > ssl->out_left )
+        {
+            MBEDTLS_SSL_DEBUG_MSG( 1, ( "f_send returned value greater than out left size" ) );
+            return( MBEDTLS_ERR_SSL_INTERNAL_ERROR );
+        }
+
         ssl->out_left -= ret;
     }