diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h
index f71e219..274a20a 100644
--- a/include/openssl/ssl.h
+++ b/include/openssl/ssl.h
@@ -2526,6 +2526,20 @@
 OPENSSL_EXPORT void SSL_set_max_send_fragment(SSL *ssl,
                                               size_t max_send_fragment);
 
+/* OPENSSL_get_big_buffer_use_count returns the total number of invalid TLS
+ * records that were accepted because of |SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER|.
+ *
+ * TODO(davidben): Remove this when (hopefully!) the quirk is demonstrated to be
+ * unnecessary. */
+OPENSSL_EXPORT uint64_t OPENSSL_get_big_buffer_use_count(void);
+
+/* OPENSSL_get_d5_bug_use_count returns the total number of invalid RSA
+ * ClientKeyExchanges that were accepted because of |SSL_OP_TLS_D5_BUG|.
+ *
+ * TODO(davidben): Remove this when (hopefully!) the quirk is demonstrated to be
+ * unnecessary. */
+OPENSSL_EXPORT uint64_t OPENSSL_get_d5_bug_use_count(void);
+
 
 /* Underdocumented functions.
  *
diff --git a/ssl/s3_srvr.c b/ssl/s3_srvr.c
index 25ab802..4f48462 100644
--- a/ssl/s3_srvr.c
+++ b/ssl/s3_srvr.c
@@ -1575,6 +1575,16 @@
   return -1;
 }
 
+static struct CRYPTO_STATIC_MUTEX g_d5_bug_lock = CRYPTO_STATIC_MUTEX_INIT;
+static uint64_t g_d5_bug_use_count = 0;
+
+uint64_t OPENSSL_get_d5_bug_use_count(void) {
+  CRYPTO_STATIC_MUTEX_lock_read(&g_d5_bug_lock);
+  uint64_t ret = g_d5_bug_use_count;
+  CRYPTO_STATIC_MUTEX_unlock(&g_d5_bug_lock);
+  return ret;
+}
+
 int ssl3_get_client_key_exchange(SSL *s) {
   int al, ok;
   long n;
@@ -1684,6 +1694,10 @@
           OPENSSL_PUT_ERROR(SSL, SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG);
           goto f_err;
         } else {
+          CRYPTO_STATIC_MUTEX_lock_write(&g_d5_bug_lock);
+          g_d5_bug_use_count++;
+          CRYPTO_STATIC_MUTEX_unlock(&g_d5_bug_lock);
+
           encrypted_premaster_secret = copy;
         }
       }
diff --git a/ssl/tls_record.c b/ssl/tls_record.c
index 36e31b4..bdc5c01 100644
--- a/ssl/tls_record.c
+++ b/ssl/tls_record.c
@@ -114,6 +114,7 @@
 #include <openssl/err.h>
 
 #include "internal.h"
+#include "../crypto/internal.h"
 
 
 /* kMaxEmptyRecords is the number of consecutive, empty records that will be
@@ -122,6 +123,16 @@
  * forever. */
 static const uint8_t kMaxEmptyRecords = 32;
 
+static struct CRYPTO_STATIC_MUTEX g_big_buffer_lock = CRYPTO_STATIC_MUTEX_INIT;
+static uint64_t g_big_buffer_use_count = 0;
+
+uint64_t OPENSSL_get_big_buffer_use_count(void) {
+  CRYPTO_STATIC_MUTEX_lock_read(&g_big_buffer_lock);
+  uint64_t ret = g_big_buffer_use_count;
+  CRYPTO_STATIC_MUTEX_unlock(&g_big_buffer_lock);
+  return ret;
+}
+
 size_t ssl_record_prefix_len(const SSL *ssl) {
   if (SSL_IS_DTLS(ssl)) {
     return DTLS1_RT_HEADER_LENGTH +
@@ -230,6 +241,14 @@
     return ssl_open_record_error;
   }
 
+  if (extra > 0 &&
+      (ciphertext_len > SSL3_RT_MAX_ENCRYPTED_LENGTH ||
+       plaintext_len > SSL3_RT_MAX_PLAIN_LENGTH)) {
+    CRYPTO_STATIC_MUTEX_lock_write(&g_big_buffer_lock);
+    g_big_buffer_use_count++;
+    CRYPTO_STATIC_MUTEX_unlock(&g_big_buffer_lock);
+  }
+
   /* Limit the number of consecutive empty records. */
   if (plaintext_len == 0) {
     ssl->s3->empty_record_count++;
