在 UNIX 上有效
authxapi_GetObjectProperty 函数检索数据库中存储的对象的单值属性的值。‑ 无法使用此函数检索具有多个值的属性,例如列表。 可以使用 authxapi_GetObjectListValue 函数检索属性列表。 所有参数字符串都必须以 NULL 结尾。
如果函数成功,则返回 0。 如果失败,则设置全局变量 errno,并返回以下错误代码之一:
返回值 |
ERRNO |
含义 |
---|---|---|
AUTHXAPI_E_EINVAL |
EINVAL |
指针无效 (NULL) |
AUTHXAPI_E_INVOBJ |
EINVAL |
对象描述符无效 |
AUTHXAPI_E_INVPROP |
EINVAL |
属性描述符无效 |
AUTHXAPI_E_NOCLASS |
ENOENT |
未找到所需的类 |
AUTHXAPI_E_NOOBJ |
ENOENT |
未找到所需的对象 |
AUTHXAPI_E_NOPROP |
ENOENT |
未找到所需的属性 |
AUTHXAPI_E_PTYPE |
EINVAL |
属性类型为列表 |
AUTHXAPI_E_DBERROR |
EIO |
怀疑数据库损坏 |
AUTHXAPI_E_NOVAL |
ENOENT |
没有与该对象关联的属性的值 |
int authxapi_GetObjectProperty (const char *szClass, const char *szObj, SEOSDB_ODF *p_odf, const char *sz_Prop, SEOSDB_PDF *p_pdf, void *val, int *size);
资源所属的类名。
要检索其属性值的对象(记录)的名称。
指向对象描述符的指针,在之前调用退出 API get 函数期间由此函数提取或由调用方提供该描述符。
要检索其值的属性的名称。
指向属性描述符的指针,在之前调用退出 API get 函数期间由此函数提取或由调用方提供该描述符。
指向使用属性值填充的变量的指针。 调用方应该提供指向与属性数据类型属于同一类型的变量的指针。
指向 val 参数所指向内存区域的大小(以字节为单位)的指针。
示例:从数据库中提取值。
此示例(常规资源 exit 函数的一部分)检索数据库中存储的值。 该 exit 函数检查请求是否针对正确的资源类。 忽略其他类。 调用 authxapi_GetObjectProperty 函数以检索 COMMENT 属性的值。 如果检索成功,该函数将测试字符串是否包含子字符串“ NO ”(注意单词前后的空格)。 如果包含,则拒绝请求。 否则,函数会将控制权返回给 CA ControlMinder 以执行标准检查。
#include stdio.h #include authxapi.h #include seostype.h int MyExitFunction(void *exit_data, SEOS_EXITRES *result) { SEOS_EXITGENR *genr_data; SEOSDB_ODF odf; SEOSDB_PDF pdf; SEOS_COMMENT comment; int rc; genr_data = (SEOS_EXITGENR *)exit_data; /* 忽略不感兴趣的类 */ if (strcmp(genr_data‑>szClass, “MyClass”)) return 0; /* 提取要验证访问的资源的 */ /* COMMENT 属性的信息。 */ rc = authxapi_GetObjectProperty(“MyClass”, genr_data‑>szRes, &odf, “COMMENT”, &pdf, comment, sizeof(comment)); if (rc == 0) { /* 我们现在具有注释字符串。 它是否包含“NO”?*/ if (strstr(comment, “ NO “) != NULL) { result‑>result = SEOS_EXITR_DENY; } } return 0; }
注意:要从 selang 命令解释器更新 COMMENT 字段,应使用注释参数。 例如:
newres MyClass anobject \
comment('This object has “ NO “ in the comment property')
版权所有 © 2013 CA。
保留所有权利。
|
|