diff --git a/ssl/s3_enc.c b/ssl/s3_enc.c
index c275a9a..b35af84 100644
--- a/ssl/s3_enc.c
+++ b/ssl/s3_enc.c
@@ -878,6 +878,7 @@
 	case SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE: return(SSL3_AD_HANDSHAKE_FAILURE);
 	case SSL_AD_BAD_CERTIFICATE_HASH_VALUE: return(SSL3_AD_HANDSHAKE_FAILURE);
 	case SSL_AD_UNKNOWN_PSK_IDENTITY:return(TLS1_AD_UNKNOWN_PSK_IDENTITY);
+	case SSL_AD_INAPPROPRIATE_FALLBACK:return(SSL3_AD_INAPPROPRIATE_FALLBACK);
 	default:			return(-1);
 		}
 	}
diff --git a/ssl/ssl.h b/ssl/ssl.h
index fd04912..13bf5cb 100644
--- a/ssl/ssl.h
+++ b/ssl/ssl.h
@@ -1774,6 +1774,7 @@
 #define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE
 #define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE
 #define SSL_AD_UNKNOWN_PSK_IDENTITY     TLS1_AD_UNKNOWN_PSK_IDENTITY /* fatal */
+#define SSL_AD_INAPPROPRIATE_FALLBACK	SSL3_AD_INAPPROPRIATE_FALLBACK /* fatal */
 
 #define SSL_ERROR_NONE			0
 #define SSL_ERROR_SSL			1
@@ -3057,5 +3058,6 @@
 #define SSL_R_UNEXPECTED_GROUP_CLOSE 433
 #define SSL_R_UNEXPECTED_OPERATOR_IN_GROUP 434
 #define SSL_R_MIXED_SPECIAL_OPERATOR_WITH_GROUPS 435
+#define SSL_R_INAPPROPRIATE_FALLBACK 436
 
 #endif
diff --git a/ssl/ssl3.h b/ssl/ssl3.h
index 77e7c5d..a7535b3 100644
--- a/ssl/ssl3.h
+++ b/ssl/ssl3.h
@@ -127,6 +127,9 @@
 
 /* Signalling cipher suite value: from draft-ietf-tls-renegotiation-03.txt */
 #define SSL3_CK_SCSV				0x030000FF
+/* Fallback signalling cipher suite value: not IANA assigned.
+ * See https://tools.ietf.org/html/draft-bmoeller-tls-downgrade-scsv-01 */
+#define SSL3_CK_FALLBACK_SCSV			0x03005600
 
 #define SSL3_CK_RSA_NULL_MD5			0x03000001
 #define SSL3_CK_RSA_NULL_SHA			0x03000002
@@ -351,6 +354,7 @@
 #define SSL3_AD_CERTIFICATE_EXPIRED	45
 #define SSL3_AD_CERTIFICATE_UNKNOWN	46
 #define SSL3_AD_ILLEGAL_PARAMETER	47	/* fatal */
+#define SSL3_AD_INAPPROPRIATE_FALLBACK	86	/* fatal */
 
 #define TLS1_HB_REQUEST		1
 #define TLS1_HB_RESPONSE	2
diff --git a/ssl/ssl_error.c b/ssl/ssl_error.c
index 4271524..57a45cb 100644
--- a/ssl/ssl_error.c
+++ b/ssl/ssl_error.c
@@ -300,6 +300,7 @@
   {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_HTTP_REQUEST), "HTTP_REQUEST"},
   {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_ILLEGAL_PADDING), "ILLEGAL_PADDING"},
   {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_ILLEGAL_SUITEB_DIGEST), "ILLEGAL_SUITEB_DIGEST"},
+  {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_INAPPROPRIATE_FALLBACK), "INAPPROPRIATE_FALLBACK"},
   {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_INCONSISTENT_COMPRESSION), "INCONSISTENT_COMPRESSION"},
   {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_INVALID_AUDIT_PROOF), "INVALID_AUDIT_PROOF"},
   {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_INVALID_AUTHZ_DATA), "INVALID_AUTHZ_DATA"},
diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c
index 46b3953..c753e50 100644
--- a/ssl/ssl_lib.c
+++ b/ssl/ssl_lib.c
@@ -1636,6 +1636,17 @@
 			continue;
 			}
 
+		/* Check for FALLBACK_SCSV */
+		if (s->s3 && n == 2 &&
+			(p[0] == ((SSL3_CK_FALLBACK_SCSV >> 8) & 0xff)) &&
+			(p[1] == (SSL3_CK_FALLBACK_SCSV & 0xff)) &&
+			s->version < ssl_get_max_version(s))
+			{
+			OPENSSL_PUT_ERROR(SSL, ssl_bytes_to_cipher_list, SSL_R_INAPPROPRIATE_FALLBACK);
+			ssl3_send_alert(s,SSL3_AL_FATAL,SSL3_AD_INAPPROPRIATE_FALLBACK);
+			goto err;
+			}
+
 		c=ssl_get_cipher_by_char(s,p);
 		p+=n;
 		if (c != NULL)
@@ -3479,6 +3490,27 @@
 	return 1;
 	}
 
+/* ssl_get_max_version returns the maximum SSL/TLS version number supported by
+ * |s|, or zero if all versions are disabled. */
+int ssl_get_max_version(const SSL *s)
+	{
+	/* Only one version supported for DTLS. */
+	if (s->version == DTLS1_VERSION)
+		return DTLS1_VERSION;
+
+	if (!(s->options & SSL_OP_NO_TLSv1_2))
+		return TLS1_2_VERSION;
+	if (!(s->options & SSL_OP_NO_TLSv1_1))
+		return TLS1_1_VERSION;
+	if (!(s->options & SSL_OP_NO_TLSv1))
+		return TLS1_VERSION;
+	if (!(s->options & SSL_OP_NO_SSLv3))
+		return SSL3_VERSION;
+	if (!(s->options & SSL_OP_NO_SSLv2))
+		return SSL2_VERSION;
+	return 0;
+	}
+
 /* Allocates new EVP_MD_CTX and sets pointer to it into given pointer
  * vairable, freeing  EVP_MD_CTX previously stored in that variable, if
  * any. If EVP_MD pointer is passed, initializes ctx with this md
diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h
index 0084613..ad938b6 100644
--- a/ssl/ssl_locl.h
+++ b/ssl/ssl_locl.h
@@ -1343,6 +1343,7 @@
 #endif
 
 int ssl3_can_cutthrough(const SSL *s);
+int ssl_get_max_version(const SSL *s);
 EVP_MD_CTX* ssl_replace_hash(EVP_MD_CTX **hash,const EVP_MD *md) ;
 void ssl_clear_hash_ctx(EVP_MD_CTX **hash);
 int ssl_add_serverhello_renegotiate_ext(SSL *s, unsigned char *p, int *len,
diff --git a/ssl/t1_enc.c b/ssl/t1_enc.c
index 7c73e35..72dbee3 100644
--- a/ssl/t1_enc.c
+++ b/ssl/t1_enc.c
@@ -1497,6 +1497,7 @@
 	case SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE: return(TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE);
 	case SSL_AD_BAD_CERTIFICATE_HASH_VALUE: return(TLS1_AD_BAD_CERTIFICATE_HASH_VALUE);
 	case SSL_AD_UNKNOWN_PSK_IDENTITY:return(TLS1_AD_UNKNOWN_PSK_IDENTITY);
+	case SSL_AD_INAPPROPRIATE_FALLBACK:return(SSL3_AD_INAPPROPRIATE_FALLBACK);
 #if 0 /* not appropriate for TLS, not used for DTLS */
 	case DTLS1_AD_MISSING_HANDSHAKE_MESSAGE: return 
 					  (DTLS1_AD_MISSING_HANDSHAKE_MESSAGE);
