summaryrefslogtreecommitdiffstats
path: root/ssl/statem/statem.h
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2017-11-23 16:21:46 +0000
committerMatt Caswell <matt@openssl.org>2017-12-04 13:31:48 +0000
commit1f359471f9eebab29fe2b0e8bf0e0f7b93f3bc26 (patch)
tree7149493bf84e7433390ebe11903286bfaa1e628c /ssl/statem/statem.h
parent1e2804f25c80136c33f3508adb54b24106b6b6f6 (diff)
Provide an SSLfatal() macro
Typically if a fatal error occurs three things need to happen: - Put an error on the error queue - Send an alert - Put the state machine into the error state Although all 3 of these things need to be done every time we hit a fatal error the responsibilities for doing this are distributed throughout the code. The place where the error goes on the queue, where the alert gets sent and where the state machine goes into the error state are almost invariably different. It has been a common pattern to pass alert codes up and down the stack to get the alert information from the point in the code where the error is detected to the point in the code where the alert gets sent. This commit provides an SSLfatal() macro (backed by an ossl_statem_fatal function) that does all 3 of the above error tasks. This is largely a drop in replacement for SSLerr, but takes a couple of extra parameters (the SSL object, and an alert code). Reviewed-by: Richard Levitte <levitte@openssl.org> (Merged from https://github.com/openssl/openssl/pull/4778)
Diffstat (limited to 'ssl/statem/statem.h')
-rw-r--r--ssl/statem/statem.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/ssl/statem/statem.h b/ssl/statem/statem.h
index 98c82917f3..83bebe77e6 100644
--- a/ssl/statem/statem.h
+++ b/ssl/statem/statem.h
@@ -114,7 +114,16 @@ __owur int ossl_statem_accept(SSL *s);
__owur int ossl_statem_connect(SSL *s);
void ossl_statem_clear(SSL *s);
void ossl_statem_set_renegotiate(SSL *s);
-void ossl_statem_set_error(SSL *s);
+void ossl_statem_fatal(SSL *s, int al, int func, int reason, const char *file,
+ int line);
+# define SSL_AD_NO_ALERT -1
+# ifndef OPENSSL_NO_ERR
+# define SSLfatal(s, al, f, r) ossl_statem_fatal((s), (al), (f), (r), \
+ OPENSSL_FILE, OPENSSL_LINE)
+# else
+# define SSLfatal(s, al, f, r) ossl_statem_fatal((s), (al), (f), (r), NULL, 0)
+# endif
+
int ossl_statem_in_error(const SSL *s);
void ossl_statem_set_in_init(SSL *s, int init);
int ossl_statem_get_in_handshake(SSL *s);