diff options
author | Richard Levitte <levitte@openssl.org> | 2019-09-04 22:04:08 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2019-09-12 17:59:52 +0200 |
commit | b13342e933c507c4ce0eda0a0193339a111f27a5 (patch) | |
tree | 27251f00624c771cd42e0f649513ef8330659a40 /include | |
parent | 06ff79bd773d0b4214e4b6a8a1332a3355b17742 (diff) |
Modernise the ERR functionality further (new functions and deprecations)
ERR_func_error_string() essentially returns NULL, and since all
function codes are now removed for all intents and purposes, this
function has fallen out of use and cannot be modified to suit the
data, since its only function is to interpret an error code.
To compensate for the loss of error code, we instead provide new
functions that extracts the function name strings from an error
record:
- ERR_get_error_func()
- ERR_peek_error_func()
- ERR_peek_last_error_func()
Similarly, the once all encompasing functions
ERR_peek_last_error_line_data(), ERR_peek_error_line_data() and
ERR_get_error_line_data() lack the capability of getting the function
name string, so we deprecate those and add these functions to replace
them:
- ERR_get_error_all()
- ERR_peek_error_all()
- ERR_peek_last_error_all()
Finally, we adjust a few lines of code that used the now deprecated
functions.
Fixes #9756
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/9756)
Diffstat (limited to 'include')
-rw-r--r-- | include/openssl/err.h | 47 |
1 files changed, 40 insertions, 7 deletions
diff --git a/include/openssl/err.h b/include/openssl/err.h index 0da66092b4..2b4a71a9a4 100644 --- a/include/openssl/err.h +++ b/include/openssl/err.h @@ -260,31 +260,64 @@ void ERR_vset_error(int lib, int reason, const char *fmt, va_list args); void ERR_set_error_data(char *data, int flags); unsigned long ERR_get_error(void); +/* + * TODO(3.0) consider if the following three functions should be deprecated. + * They all drop the error record from the error queue, so regardless of which + * one is used, the rest of the information is lost, making them not so useful. + * The recommendation should be to use the peek functions to extract all the + * additional data. + */ unsigned long ERR_get_error_line(const char **file, int *line); -unsigned long ERR_get_error_line_data(const char **file, int *line, - const char **data, int *flags); +unsigned long ERR_get_error_func(const char **func); +unsigned long ERR_get_error_data(const char **data, int *flags); +unsigned long ERR_get_error_all(const char **file, int *line, + const char **func, + const char **data, int *flags); +DEPRECATEDIN_3(unsigned long ERR_get_error_line_data(const char **file, + int *line, + const char **data, + int *flags)) unsigned long ERR_peek_error(void); unsigned long ERR_peek_error_line(const char **file, int *line); -unsigned long ERR_peek_error_line_data(const char **file, int *line, - const char **data, int *flags); +unsigned long ERR_peek_error_func(const char **func); +unsigned long ERR_peek_error_data(const char **data, int *flags); +unsigned long ERR_peek_error_all(const char **file, int *line, + const char **func, + const char **data, int *flags); +DEPRECATEDIN_3(unsigned long ERR_peek_error_line_data(const char **file, + int *line, + const char **data, + int *flags)) unsigned long ERR_peek_last_error(void); unsigned long ERR_peek_last_error_line(const char **file, int *line); -unsigned long ERR_peek_last_error_line_data(const char **file, int *line, - const char **data, int *flags); +unsigned long ERR_peek_last_error_func(const char **func); +unsigned long ERR_peek_last_error_data(const char **data, int *flags); +unsigned long ERR_peek_last_error_all(const char **file, int *line, + const char **func, + const char **data, int *flags); +DEPRECATEDIN_3(unsigned long ERR_peek_last_error_line_data(const char **file, + int *line, + const char **data, + int *flags)) + void ERR_clear_error(void); + char *ERR_error_string(unsigned long e, char *buf); void ERR_error_string_n(unsigned long e, char *buf, size_t len); const char *ERR_lib_error_string(unsigned long e); -const char *ERR_func_error_string(unsigned long e); +DEPRECATEDIN_3(const char *ERR_func_error_string(unsigned long e)) const char *ERR_reason_error_string(unsigned long e); + void ERR_print_errors_cb(int (*cb) (const char *str, size_t len, void *u), void *u); # ifndef OPENSSL_NO_STDIO void ERR_print_errors_fp(FILE *fp); # endif void ERR_print_errors(BIO *bp); + void ERR_add_error_data(int num, ...); void ERR_add_error_vdata(int num, va_list args); + int ERR_load_strings(int lib, ERR_STRING_DATA *str); int ERR_load_strings_const(const ERR_STRING_DATA *str); int ERR_unload_strings(int lib, ERR_STRING_DATA *str); |