cc [ flag ... ] file ... -lpam [ library ... ] #include <security/pam_appl.h>int pam_set_item(pam_handle_t *pamh, int item_type, const void *item);
The pam_get_item() and pam_set_item() functions allow applications and PAM service modules to access and to update PAM information as needed. The information is specified by item_type , and can be one of the following:
The service name.
The user name.
The user authentication token.
The old user authentication token.
The tty name.
The remote host name.
The remote user name.
The pam_conv structure.
The default prompt used by pam_get_user() .
For security reasons, the item_type PAM_AUTHTOK and PAM_OLDAUTHTOK are available only to the module providers. The authentication module, account module, and session management module should treat PAM_AUTHTOK as the current authentication token and ignore PAM_OLDAUTHTOK . The password management module should treat PAM_OLDAUTHTOK as the current authentication token and PAM_AUTHTOK as the new authentication token.
The pam_set_item() function is passed the authentication handle, pamh , returned by pam_start() , a pointer to the object, item , and its type, item_type . If successful, pam_set_item() copies the item to an internal storage area allocated by the authentication module and returns PAM_SUCCESS . An item that had been previously set will be overwritten by the new value.
The pam_get_item() function is passed the authentication handle, pamh , returned by pam_start() , an item_type , and the address of the pointer, item , which is assigned the address of the requested object. The object data is valid until modified by a subsequent call to pam_set_item() for the same item_type , or unless it is modified by any of the underlying service modules. If the item has not been previously set, pam_get_item() returns a null pointer. An item retrieved by pam_get_item() should not be modified or freed. The item will be released by pam_end() .
Upon success, pam_get_item() returns PAM_SUCCESS ; otherwise it returns an error code. Refer to pam(3PAM) for information on error related return values.
See attributes(5) for description of the following attributes:
|ATTRIBUTE TYPE||ATTRIBUTE VALUE|
|MT-Level||MT-Safe with exceptions|
The interfaces in libpam are MT-Safe only if each thread within the multithreaded application uses its own PAM handle.