pam_set_data(3)

NAME
pam_set_data, pam_get_data - PAM routines to maintain module specific state

SYNOPSIS

cc [ flag ... ] file ... -lpam [ library ... ]

#include <security/pam_appl.h>

int pam_set_data(pam_handle_t *pamh, const char *module_data_name, const 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, void **data);

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

pam_set_data() 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. module_data_name should be unique across all services (UNIX, etc).

The cleanup function is used to free 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, and is therefore specific to each module.

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

pam_get_data() 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.

RETURN VALUES

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

    PAM_NO_MODULE_DATA
        No module specific data is present

SEE ALSO
pam(3), pam_end(3)