---
name: "libressl-ERR_GET_LIB"
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_LIB"
---

# libressl-ERR\_GET\_LIB(3)

get library, function and reason codes for OpenSSL errors

## NAME

**ERR\_GET\_LIB**, **ERR\_GET\_FUNC**, **ERR\_GET\_REASON**, **ERR\_FATAL\_ERROR** – get library, function and reason codes for OpenSSL errors

## SYNOPSIS

Crypto Library (libcrypto, -lcrypto)

**#include \<openssl/err.h\>**

*int*\

**ERR\_GET\_LIB**(*unsigned long e*);

*int*\

**ERR\_GET\_FUNC**(*unsigned long e*);

*int*\

**ERR\_GET\_REASON**(*unsigned long e*);

*int*\

**ERR\_FATAL\_ERROR**(*unsigned long e*);

## DESCRIPTION

The error code returned by ERR\_get\_error(3) consists of a library number, function code, and reason code. **ERR\_GET\_LIB**(), **ERR\_GET\_FUNC**(), and **ERR\_GET\_REASON**() can be used to extract these.

The library number and function code describe where the error occurred, whereas the reason code is the information about what went wrong.

Each sub-library of OpenSSL has a unique library number; function and reason codes are unique within each sub-library. Note that different libraries may use the same value to signal different functions and reasons.

ERR\_R\_\* reason codes such as ERR\_R\_MALLOC\_FAILURE are globally unique. However, when checking for sub-library specific reason codes, be sure to also compare the library number.

**ERR\_FATAL\_ERROR**() indicates whether a given error code is a fatal error.

These functions are implemented as macros.

## RETURN VALUES

**ERR\_GET\_LIB**(), **ERR\_GET\_FUNC**(), and **ERR\_GET\_REASON**() return the library number, function code, and reason code, respectively.

**ERR\_FATAL\_ERROR**() returns non-zero if the error is fatal or 0 otherwise.

## SEE ALSO

ERR(3), ERR\_get\_error(3)

## HISTORY

**ERR\_GET\_LIB**(), **ERR\_GET\_FUNC**(), **ERR\_GET\_REASON**(), and **ERR\_FATAL\_ERROR**() first appeared in SSLeay 0.4.4 and have been available since OpenBSD 2.4.
