diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index e00dd01..8934518 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -2589,6 +2589,9 @@
     }
 }
 
+#define ENCRYPTION_SUCCESS 0xCC
+#define ENCRYPTION_FAIL 0xAA
+
 int mbedtls_ssl_encrypt_buf( mbedtls_ssl_context *ssl,
                              mbedtls_ssl_transform *transform,
                              mbedtls_record *rec,
@@ -2601,6 +2604,7 @@
     unsigned char add_data[13 + 1 + MBEDTLS_SSL_CID_OUT_LEN_MAX ];
     size_t add_data_len;
     size_t post_avail;
+    int encryption_status = ENCRYPTION_FAIL;
 
     /* The SSL context is only used for debugging purposes! */
 #if !defined(MBEDTLS_DEBUG_C)
@@ -2793,6 +2797,7 @@
             MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) );
             return( MBEDTLS_ERR_SSL_INTERNAL_ERROR );
         }
+        encryption_status = ENCRYPTION_SUCCESS;
     }
     else
 #endif /* MBEDTLS_ARC4_C || MBEDTLS_CIPHER_NULL_CIPHER */
@@ -2891,6 +2896,8 @@
             return( ret );
         }
 #endif
+        encryption_status = ENCRYPTION_SUCCESS;
+
         MBEDTLS_SSL_DEBUG_BUF( 4, "after encrypt: tag",
                                data + rec->data_len, transform->taglen );
 
@@ -2994,6 +3001,9 @@
             return( ret );
         }
 #endif
+
+        encryption_status = ENCRYPTION_SUCCESS;
+
         if( rec->data_len != olen )
         {
             MBEDTLS_SSL_DEBUG_MSG( 1, ( "should never happen" ) );
@@ -3082,7 +3092,11 @@
 
     MBEDTLS_SSL_DEBUG_MSG( 2, ( "<= encrypt buf" ) );
 
-    return( 0 );
+    if( encryption_status == ENCRYPTION_SUCCESS )
+    {
+        return( 0 );
+    }
+    return( MBEDTLS_ERR_PLATFORM_FAULT_DETECTED );
 }
 
 int mbedtls_ssl_decrypt_buf( mbedtls_ssl_context const *ssl,
