---
name: "pam_getenvlist"
section: "3"
platform: "linux"
package: "pam"
version: "1.7.3-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/pam_getenvlist"
---

# pam\_getenvlist(3)

getting the PAM environment

## NAME

pam\_getenvlist - getting the PAM environment

## SYNOPSIS

```
#include <security/pam_appl.h>
```

**char \*\*pam\_getenvlist(pam\_handle\_t \****pamh***);**

## DESCRIPTION

The **pam\_getenvlist** function returns a complete copy of the PAM environment as associated with the handle *pamh*. The PAM environment variables represent the contents of the regular environment variables of the authenticated user when service is granted.

The format of the memory is a malloc()'d array of char pointers, the last element of which is set to NULL. Each of the non-NULL entries in this array point to a NUL terminated and malloc()'d char string of the form: "*name=value*".

It should be noted that this memory will never be free()'d by libpam. Once obtained by a call to **pam\_getenvlist**, it is the responsibility of the calling application to free() this memory.

It is by design, and not a coincidence, that the format and contents of the returned array matches that required for the third argument of the [**execle**(3)](/execle/3.md) function call.

## RETURN VALUES

The **pam\_getenvlist** function returns NULL on failure.

## SEE ALSO

[**pam\_start**(3)](/pam_start/3.md), [**pam\_getenv**(3)](/pam_getenv/3.md), [**pam\_putenv**(3)](/pam_putenv/3.md), [**pam**(8)](/pam/8.md)
