pam_set_data 子例程
用途
设置活动 PAM 会话的特定 PAM 模块的信息。
库
PAM 库 (libpam.a)
语法
#include <security/pam_appl.h>
int pam_set_data (PAMHandle, ModuleDataName, Data, *(cleanup)(pam_handle_t *pamh, void *data,
int pam_end_status))
pam_handle_t *PAMHandle;
const char *ModuleDataName;
void *Data;
void *(cleanup)(pam_handle_t *pamh, void *data, int pam_end_status);
描述
pam_set_data 子例程允许在 PAM 句柄 PAMHandle中设置和更新特定于模块的数据。 ModuleDataName参数用于唯一标识数据,即Data。 可以通过指定ModuleDataName并将其与相应的 PAM 句柄一起传递给pam_get_data(),来获取存储的信息。清理参数是一个指向函数的指针,调用pam_end()时,该函数将释放数据所使用的已分配内存。 如果数据已与ModuleDataName 关联,PAM 会对旧数据进行清理,用Data 将其覆盖,并替换旧的清理函数。 如果要设置的信息是已知的 PAM 项类型,请改为使用 pam_putenv 子例程。
参数
| 项 | 描述 |
|---|---|
| PAMHandle | 表示当前用户认证会话的 PAM 句柄。 此句柄通过调用 pam_start ()获取。 |
| ModuleDataName | 数据的唯一标识。 |
| DATA | 对ModuleDataName 所表示数据的引用。 |
| cleanup | 一个函数指针,由 pam_end () 调用以清除 数据所使用的所有已分配内存。 |
返回值
成功完成后, pam_set_data_ 将返回 PAM_SUCCESS。 如果例程失败,那么将根据实际错误返回 PAM_SYSTEM_ERR 或 PAM_BUF_ERR 。
错误代码
| 项 | 描述 |
|---|---|
| PAM_SYSTEM_ERR | 发生系统错误。 |
| PAM_BUF_ERR | 发生内存错误。 |