priv_register_{info,cap}_fn, priv_invoke_{info,cap}_fn - register and invoke custom privileged methods. |
#include <privman.h> |
int priv_register_info_fn(char
*(*fnptr)(char * const *)); int priv_register_cap_fn(int (*fnptr)(char * const *)); char *priv_invoke_info_fn(int handle, char * const args[]); int priv_invoke_cap_fn(int handle, char * const args[]); |
These methods allow you to register functions to be executed inside the Privman server. The info functions return a string, the capability functions return a file descriptor. |
The register functions only work before priv_init(3) is invoked. They return an integer handle to identify the registered function. The handle is then passed into the invoke functions after priv_init(3) s invoked to cause the registered function to be invoked inside the context of the Privman server. |
On success, a handle is returned. On error, -1 is returned and errno is set appropriately. |
If one of the register functions is called after priv_init(3) is invoked, errno will be EPERM. |
If an invalid handle is passed to either of the invoke functions, either -1 or NULL will be returned, and errno will be set to ENOENT. |
If the registered function returns -1 or NULL, errno will be set to the value of errno after the registered function was executed. |
There is currently no configuration option to allow setting custom methods. While the fork(2) that happens in priv_init(3) will protect the Privman servers function map from modification, any poorly written methods can trash the servers state. Write your custom methods carefully. |
Network Associates. Send email to <privman@nailabs.com> |
priv_daemon(3) priv_execve(3) priv_fopen(3) priv_fork(3) priv_wait4(3) priv_init(3) privman_conf(5) priv_open(3) priv_pam(3) priv_rerunas(3) priv_rerespawn_as(3) privman(7) |