123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- =pod
- =head1 NAME
- ERR_raise, ERR_raise_data,
- ERR_put_error, ERR_add_error_data, ERR_add_error_vdata,
- ERR_add_error_txt, ERR_add_error_mem_bio
- - record an error
- =head1 SYNOPSIS
- #include <openssl/err.h>
- void ERR_raise(int lib, int reason);
- void ERR_raise_data(int lib, int reason, const char *fmt, ...);
- void ERR_add_error_data(int num, ...);
- void ERR_add_error_vdata(int num, va_list arg);
- void ERR_add_error_txt(const char *sep, const char *txt);
- void ERR_add_error_mem_bio(const char *sep, BIO *bio);
- Deprecated since OpenSSL 3.0:
- void ERR_put_error(int lib, int func, int reason, const char *file, int line);
- =head1 DESCRIPTION
- ERR_raise() adds a new error to the thread's error queue. The
- error occurred in the library B<lib> for the reason given by the
- B<reason> code. Furthermore, the name of the file, the line, and name
- of the function where the error occurred is saved with the error
- record.
- ERR_raise_data() does the same thing as ERR_raise(), but also lets the
- caller specify additional information as a format string B<fmt> and an
- arbitrary number of values, which are processed with L<BIO_snprintf(3)>.
- ERR_put_error() adds an error code to the thread's error queue. It
- signals that the error of reason code B<reason> occurred in function
- B<func> of library B<lib>, in line number B<line> of B<file>.
- This function is usually called by a macro.
- ERR_add_error_data() associates the concatenation of its B<num> string
- arguments as additional data with the error code added last.
- ERR_add_error_vdata() is similar except the argument is a B<va_list>.
- Multiple calls to these functions append to the current top of the error queue.
- The total length of the string data per error is limited to 4096 characters.
- ERR_add_error_txt() appends the given text string as additional data to the
- last error queue entry, after inserting the optional separator string if it is
- not NULL and the top error entry does not yet have additional data.
- In case the separator is at the end of the text it is not appended to the data.
- The B<sep> argument may be for instance "\n" to insert a line break when needed.
- If the associated data would become more than 4096 characters long
- (which is the limit given above)
- it is split over sufficiently many new copies of the last error queue entry.
- ERR_add_error_mem_bio() is the same as ERR_add_error_txt() except that
- the text string is taken from the given memory BIO.
- It appends '\0' to the BIO contents if not already NUL-terminated.
- L<ERR_load_strings(3)> can be used to register
- error strings so that the application can a generate human-readable
- error messages for the error code.
- =head2 Reporting errors
- =for comment TODO(3.0) should this be internal documentation?
- Each sub-library has a specific macro XXXerr() that is used to report
- errors. Its first argument is a function code B<XXX_F_...>, the second
- argument is a reason code B<XXX_R_...>. Function codes are derived
- from the function names; reason codes consist of textual error
- descriptions. For example, the function ssl3_read_bytes() reports a
- "handshake failure" as follows:
- SSLerr(SSL_F_SSL3_READ_BYTES, SSL_R_SSL_HANDSHAKE_FAILURE);
- Function and reason codes should consist of uppercase characters,
- numbers and underscores only. The error file generation script translates
- function codes into function names by looking in the header files
- for an appropriate function name, if none is found it just uses
- the capitalized form such as "SSL3_READ_BYTES" in the above example.
- The trailing section of a reason code (after the "_R_") is translated
- into lowercase and underscores changed to spaces.
- Although a library will normally report errors using its own specific
- XXXerr macro, another library's macro can be used. This is normally
- only done when a library wants to include ASN1 code which must use
- the ASN1err() macro.
- =head1 RETURN VALUES
- ERR_raise(), ERR_put_error(),
- ERR_add_error_data(), ERR_add_error_vdata()
- ERR_add_error_txt(), and ERR_add_error_mem_bio()
- return no values.
- =head1 NOTES
- ERR_raise() and ERR_put_error() are implemented as macros.
- =head1 SEE ALSO
- L<ERR_load_strings(3)>
- =head1 HISTORY
- B<ERR_add_error_txt> and B<ERR_add_error_mem_bio> were added in OpenSSL 3.0.
- =head1 COPYRIGHT
- Copyright 2000-2020 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
|