summaryrefslogtreecommitdiffstats
path: root/ssl/ssl3.h
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2012-01-04 23:07:54 +0000
committerDr. Stephen Henson <steve@openssl.org>2012-01-04 23:07:54 +0000
commitaaa3850ccd22feccd009a1a228424618cf10b943 (patch)
treebae0dd178d00be4ba8fe4a1b7823a871b5fb6dc1 /ssl/ssl3.h
parenta17b5d5a4f50f50f46d27fc52158455d12833196 (diff)
Only allow one SGC handshake restart for SSL/TLS. (CVE-2011-4619)
Diffstat (limited to 'ssl/ssl3.h')
-rw-r--r--ssl/ssl3.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/ssl/ssl3.h b/ssl/ssl3.h
index 05a59e6ce0..badf89d3d9 100644
--- a/ssl/ssl3.h
+++ b/ssl/ssl3.h
@@ -388,6 +388,17 @@ typedef struct ssl3_buffer_st
#define TLS1_FLAGS_TLS_PADDING_BUG 0x0008
#define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010
#define TLS1_FLAGS_KEEP_HANDSHAKE 0x0020
+
+/* SSL3_FLAGS_SGC_RESTART_DONE is set when we
+ * restart a handshake because of MS SGC and so prevents us
+ * from restarting the handshake in a loop. It's reset on a
+ * renegotiation, so effectively limits the client to one restart
+ * per negotiation. This limits the possibility of a DDoS
+ * attack where the client handshakes in a loop using SGC to
+ * restart. Servers which permit renegotiation can still be
+ * effected, but we can't prevent that.
+ */
+#define SSL3_FLAGS_SGC_RESTART_DONE 0x0040
#ifndef OPENSSL_NO_SSL_INTERN