---
name: "libressl-ERR_get_error"
section: "3"
platform: "linux"
package: "libressl"
version: "4.4.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/libressl-ERR_get_error"
---

# libressl-ERR\_get\_error(3)

obtain OpenSSL error code and data

## 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

Crypto Library (libcrypto, -lcrypto)

**#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)](/free/3.md) 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.
