summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2019-07-25 21:57:48 +0200
committerRichard Levitte <levitte@openssl.org>2019-09-12 18:33:15 +0200
commit14e275e8fb736be4ea83441b630515f7be97d06b (patch)
tree8a0438dadaaf5bc625d513345f74ec43bf7e623d
parent1f86b8228b49938e0e368f361202570d7eab5806 (diff)
Deprecate the public definition of ERR_STATE
The intention is to make it opaque later on. Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/9462)
-rw-r--r--crypto/err/err.c6
-rw-r--r--crypto/err/err_blocks.c3
-rw-r--r--crypto/err/err_prn.c3
-rw-r--r--include/openssl/err.h12
-rw-r--r--include/openssl/ossl_typ.h2
5 files changed, 21 insertions, 5 deletions
diff --git a/crypto/err/err.c b/crypto/err/err.c
index deaa579090..25426be730 100644
--- a/crypto/err/err.c
+++ b/crypto/err/err.c
@@ -7,6 +7,9 @@
* https://www.openssl.org/source/license.html
*/
+/* TODO: When ERR_STATE becomes opaque, this musts be removed */
+#define OSSL_FORCE_ERR_STATE
+
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
@@ -24,6 +27,9 @@
#include "e_os.h"
#include "err_locl.h"
+/* Forward declaration in case it's not published because of configuration */
+ERR_STATE *ERR_get_state(void);
+
static int err_load_strings(const ERR_STRING_DATA *str);
static void ERR_STATE_free(ERR_STATE *s);
diff --git a/crypto/err/err_blocks.c b/crypto/err/err_blocks.c
index cf1bb9708a..c2ff7c0823 100644
--- a/crypto/err/err_blocks.c
+++ b/crypto/err/err_blocks.c
@@ -7,6 +7,9 @@
* https://www.openssl.org/source/license.html
*/
+/* TODO: When ERR_STATE becomes opaque, this musts be removed */
+#define OSSL_FORCE_ERR_STATE
+
#include <string.h>
#include <openssl/err.h>
#include "err_locl.h"
diff --git a/crypto/err/err_prn.c b/crypto/err/err_prn.c
index 9ea3eb3dee..1e1531b91d 100644
--- a/crypto/err/err_prn.c
+++ b/crypto/err/err_prn.c
@@ -7,6 +7,9 @@
* https://www.openssl.org/source/license.html
*/
+/* TODO: When ERR_STATE becomes opaque, this musts be removed */
+#define OSSL_FORCE_ERR_STATE
+
#include <stdio.h>
#include "internal/cryptlib.h"
#include <openssl/crypto.h>
diff --git a/include/openssl/err.h b/include/openssl/err.h
index 2b4a71a9a4..fc7326b7c9 100644
--- a/include/openssl/err.h
+++ b/include/openssl/err.h
@@ -38,11 +38,12 @@ extern "C" {
# define ERR_TXT_MALLOCED 0x01
# define ERR_TXT_STRING 0x02
-# define ERR_FLAG_MARK 0x01
-# define ERR_FLAG_CLEAR 0x02
+# if !OPENSSL_API_3 || defined(OSSL_FORCE_ERR_STATE)
+# define ERR_FLAG_MARK 0x01
+# define ERR_FLAG_CLEAR 0x02
-# define ERR_NUM_ERRORS 16
-typedef struct err_state_st {
+# define ERR_NUM_ERRORS 16
+struct err_state_st {
int err_flags[ERR_NUM_ERRORS];
unsigned long err_buffer[ERR_NUM_ERRORS];
char *err_data[ERR_NUM_ERRORS];
@@ -52,7 +53,8 @@ typedef struct err_state_st {
int err_line[ERR_NUM_ERRORS];
const char *err_func[ERR_NUM_ERRORS];
int top, bottom;
-} ERR_STATE;
+};
+# endif
/* library */
# define ERR_LIB_NONE 1
diff --git a/include/openssl/ossl_typ.h b/include/openssl/ossl_typ.h
index 530de2d20c..70d9144ba1 100644
--- a/include/openssl/ossl_typ.h
+++ b/include/openssl/ossl_typ.h
@@ -88,6 +88,8 @@ typedef struct bn_gencb_st BN_GENCB;
typedef struct buf_mem_st BUF_MEM;
+typedef struct err_state_st ERR_STATE;
+
typedef struct evp_cipher_st EVP_CIPHER;
typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
typedef struct evp_md_st EVP_MD;