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 708ecad..d82600c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -23,6 +23,8 @@
      Contributed by Mathieu Briand.
    * Fix typo in a comment ctr_drbg.c. Contributed by Paul Sokolovsky.
    * Remove support for the library reference configuration for picocoin.
+   * Add guard to validate that out_left can not be negative. Raised by 
+     samoconnor in #1245.
 
 = mbed TLS 2.7.0 branch released 2018-02-03
 
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 617dedb..1de5eaa 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -2469,6 +2469,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;
     }