mirror of
https://github.com/openssl/openssl.git
synced 2025-01-18 13:44:20 +08:00
b13342e933
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)
130 lines
4.9 KiB
Plaintext
130 lines
4.9 KiB
Plaintext
=pod
|
|
|
|
=head1 NAME
|
|
|
|
ERR_get_error, ERR_peek_error, ERR_peek_last_error,
|
|
ERR_get_error_line, ERR_peek_error_line, ERR_peek_last_error_line,
|
|
ERR_get_error_func, ERR_peek_error_func, ERR_peek_last_error_func,
|
|
ERR_get_error_data, ERR_peek_error_data, ERR_peek_last_error_data,
|
|
ERR_get_error_all, ERR_peek_error_all, ERR_peek_last_error_all,
|
|
ERR_get_error_line_data, ERR_peek_error_line_data, ERR_peek_last_error_line_data
|
|
- obtain error code and data
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
#include <openssl/err.h>
|
|
|
|
unsigned long ERR_get_error(void);
|
|
unsigned long ERR_peek_error(void);
|
|
unsigned long ERR_peek_last_error(void);
|
|
|
|
unsigned long ERR_get_error_line(const char **file, int *line);
|
|
unsigned long ERR_peek_error_line(const char **file, int *line);
|
|
unsigned long ERR_peek_last_error_line(const char **file, int *line);
|
|
|
|
unsigned long ERR_get_error_func(const char **func);
|
|
unsigned long ERR_peek_error_func(const char **func);
|
|
unsigned long ERR_peek_last_error_func(const char **func);
|
|
|
|
unsigned long ERR_get_error_data(const char **data, int *flags);
|
|
unsigned long ERR_peek_error_data(const char **data, int *flags);
|
|
unsigned long ERR_peek_last_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);
|
|
unsigned long ERR_peek_error_all(const char **file, int *line,
|
|
const char *func,
|
|
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);
|
|
|
|
Deprecated since OpenSSL 3.0:
|
|
|
|
unsigned long ERR_get_error_line_data(const char **file, int *line,
|
|
const char **data, int *flags);
|
|
unsigned long ERR_peek_error_line_data(const char **file, int *line,
|
|
const char **data, int *flags);
|
|
unsigned long ERR_peek_last_error_line_data(const char **file, int *line,
|
|
const char **data, int *flags);
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
ERR_get_error() returns the earliest error code from the thread's error
|
|
queue and removes the entry. This function can be called repeatedly
|
|
until there are no more error codes to return.
|
|
|
|
ERR_peek_error() returns the earliest error code from the thread's
|
|
error queue without modifying it.
|
|
|
|
ERR_peek_last_error() returns the latest error code from the thread's
|
|
error queue without modifying it.
|
|
|
|
See L<ERR_GET_LIB(3)> for obtaining information about
|
|
location and reason of the error, and
|
|
L<ERR_error_string(3)> for human-readable error
|
|
messages.
|
|
|
|
ERR_get_error_line(), ERR_peek_error_line() and
|
|
ERR_peek_last_error_line() are the same as ERR_get_error(),
|
|
ERR_peek_error() and ERR_peek_last_error(), but they
|
|
additionally store the file name and line number where
|
|
the error occurred in *B<file> and *B<line>, unless these are B<NULL>.
|
|
|
|
ERR_get_error_func(), ERR_peek_error_func() and
|
|
ERR_peek_last_error_func() are the same as ERR_get_error(),
|
|
ERR_peek_error() and ERR_peek_last_error(), but they
|
|
additionally store the name of the function where the error in *B<func>,
|
|
unless it is B<NULL>.
|
|
|
|
ERR_get_error_data(), ERR_peek_error_data() and
|
|
ERR_peek_last_error_data() are the same as ERR_get_error(),
|
|
ERR_peek_error() and ERR_peek_last_error(), but they
|
|
additionally store additional data and flags associated with the error
|
|
code in *B<data> and *B<flags>, unless these are B<NULL>.
|
|
*B<data> contains a string if *B<flags>&B<ERR_TXT_STRING> is true.
|
|
|
|
ERR_get_error_all(), ERR_peek_error_all() and
|
|
ERR_peek_last_error_all() are combinations of all of the above.
|
|
|
|
ERR_get_error_line_data(), ERR_peek_error_line_data() and
|
|
ERR_peek_last_error_line_data() are older variants of ERR_get_error_all(),
|
|
ERR_peek_error_all() and ERR_peek_last_error_all(), and should no longer
|
|
be used.
|
|
|
|
An application B<MUST NOT> free the *B<data> pointer (or any other pointers
|
|
returned by these functions) with OPENSSL_free() as freeing is handled
|
|
automatically by the error library.
|
|
|
|
=head1 RETURN VALUES
|
|
|
|
The error code, or 0 if there is no error in the queue.
|
|
|
|
=head1 SEE ALSO
|
|
|
|
L<ERR_error_string(3)>,
|
|
L<ERR_GET_LIB(3)>
|
|
|
|
=head1 HISTORY
|
|
|
|
ERR_get_error_func(), ERR_peek_error_func(), ERR_peek_last_error_func(),
|
|
ERR_get_error_data(), ERR_peek_error_data(), ERR_peek_last_error_data(),
|
|
ERR_get_error_all(), ERR_peek_error_all() and ERR_peek_last_error_all()
|
|
were added in OpenSSL 3.0.
|
|
|
|
ERR_get_error_line_data(), ERR_peek_error_line_data() and
|
|
ERR_peek_last_error_line_data() became deprecated in OpenSSL 3.0.
|
|
|
|
|
|
=head1 COPYRIGHT
|
|
|
|
Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
|
|
|
|
Licensed under the Apache License 2.0 (the "License"). You may not use
|
|
this file except in compliance with the License. You can obtain a copy
|
|
in the file LICENSE in the source distribution or at
|
|
L<https://www.openssl.org/source/license.html>.
|
|
|
|
=cut
|