xref: /illumos-gate/usr/src/man/man3pam/pam_set_data.3pam (revision eb9a1df2aeb866bf1de4494433b6d7e5fa07b3ae)
te
Copyright (c) 1998, Sun Microsystems, Inc. All Rights Reserved
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
PAM_SET_DATA 3PAM "Oct 13, 1998"
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, 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(5) for description of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
Interface Stability Stable
MT-Level MT-Safe with exceptions
SEE ALSO

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

NOTES

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