PAM_SET_DATA(3PAM) PAM Library Functions PAM_SET_DATA(3PAM)

NAME


pam_set_data, pam_get_data - PAM routines to maintain module specific
state

SYNOPSIS


cc [ flag ... ] file ... -lpam [ library ... ]
#include <security/pam_modules.h>


int pam_set_data(pam_handle_t *pamh,
const char *module_data_name, void *data,
void (*cleanup) (pam_handle_t *pamh, void *data,
int pam_end_status));


int pam_get_data(const pam_handle_t *pamh,
const char *module_data_name, const void **data);


DESCRIPTION


The pam_set_data() and pam_get_data() functions allow PAM service
modules to access and update module specific information as needed.
These functions should not be used by applications.


The pam_set_data() function stores module specific data within the
PAM handle pamh. The module_data_name argument uniquely identifies
the data, and the data argument represents the actual data. The
module_data_name argument should be unique across all services.


The cleanup function frees up any memory used by the data after it is
no longer needed, and is invoked by pam_end(). The cleanup function
takes as its arguments a pointer to the PAM handle, pamh, a pointer
to the actual data, data, and a status code, pam_end_status. The
status code determines exactly what state information needs to be
purged.


If pam_set_data() is called and module data already exists from a
prior call to pam_set_data() under the same module_data_name, then
the existing data is replaced by the new data, and the existing
cleanup function is replaced by the new cleanup function.


The pam_get_data() function retrieves module-specific data stored in
the PAM handle, pamh, identified by the unique name,
module_data_name. The data argument is assigned the address of the
requested data. The data retrieved by pam_get_data() should not be
modified or freed. The data will be released by pam_end().

RETURN VALUES


In addition to the return values listed in pam(3PAM), the following
value may also be returned:

PAM_NO_MODULE_DATA
No module specific data is present.


ATTRIBUTES


See attributes(7) for description of the following attributes:


+--------------------+-------------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-------------------------+
|Interface Stability | Stable |
+--------------------+-------------------------+
|MT-Level | MT-Safe with exceptions |
+--------------------+-------------------------+

SEE ALSO


libpam(3LIB), pam(3PAM), pam_end(3PAM), attributes(7)

NOTES


The interfaces in libpam are MT-Safe only if each thread within the
multithreaded application uses its own PAM handle.

July 6, 2024 PAM_SET_DATA(3PAM)

tribblix@gmail.com :: GitHub :: Privacy