Fix false reject in padding check in ssl_decrypt_buf() for CBC ciphersuites

In case full SSL frames arrived, they were rejected because an overly
strict padding check.
diff --git a/ChangeLog b/ChangeLog
index d58df3a..1d3277c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,8 @@
    * Typos in platform.c and pkcs11.c (found by Daniel Phillips and Steffan
      Karger)
    * cert_write app should use subject of issuer certificate as issuer of cert
+   * Fix false reject in padding check in ssl_decrypt_buf() for CBC
+     ciphersuites, for full SSL frames of data.
 
 = PolarSSL 1.3.6 released on 2014-04-11
 
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 116bc5c..271bfe6 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -1633,13 +1633,15 @@
              * Padding is guaranteed to be incorrect if:
              *   1. padlen >= ssl->in_msglen
              *
-             *   2. padding_idx > SSL_MAX_CONTENT_LEN
+             *   2. padding_idx >= SSL_MAX_CONTENT_LEN +
+             *                     ssl->transform_in->maclen
              *
              * In both cases we reset padding_idx to a safe value (0) to
              * prevent out-of-buffer reads.
              */
             correct &= ( ssl->in_msglen >= padlen + 1 );
-            correct &= ( padding_idx <= SSL_MAX_CONTENT_LEN );
+            correct &= ( padding_idx < SSL_MAX_CONTENT_LEN +
+                                       ssl->transform_in->maclen );
 
             padding_idx *= correct;