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_ERRPAM_BUF_ERR

错误代码

描述
PAM_SYSTEM_ERR 发生系统错误。
PAM_BUF_ERR 发生内存错误。