ERR_GET_ERROR(3) | Library Functions Manual | ERR_GET_ERROR(3)

# 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_line_data`, `ERR_peek_error_line_data`, `ERR_peek_last_error_line_data` — obtain OpenSSL error code and data

# SYNOPSIS

library “libcrypto”
`#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_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);

# 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 ERR_GET_LIB(3) for obtaining information about the location and reason for the error, and 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 the above, but they additionally store the file name and line number where the error occurred in *file and *line, unless these are `NULL`.

`ERR_get_error_line_data`(), `ERR_peek_error_line_data`(), and `ERR_peek_last_error_line_data`() store additional data and flags associated with the error code in *data and *flags, unless these are `NULL`. *data contains a string if *flags&`ERR_TXT_STRING` is true.

An application MUST NOT free the *data pointer (or any other pointers returned by these functions) with free(3) as freeing is handled automatically by the error library.

# RETURN VALUES

The error code, or 0 if there is no error in the queue.

# SEE ALSO

ERR(3), ERR_error_string(3), ERR_GET_LIB(3)

# HISTORY

`ERR_get_error`() and `ERR_peek_error`() first appeared in SSLeay 0.4.4. `ERR_get_error_line`() and `ERR_peek_error_line`() first appeared in SSLeay 0.6.0. `ERR_get_error_line_data`() and `ERR_peek_error_line_data`() first appeared in SSLeay 0.9.0. All these functions have been available since OpenBSD 2.4.

`ERR_peek_last_error`(), `ERR_peek_last_error_line`(), and `ERR_peek_last_error_line_data`() first appeared in OpenSSL 0.9.7 and have been available since OpenBSD 3.2.

June 8, 2025 | Debian