.TH "sepol_genusers" "3" "15 March 2005" "sds@tycho.nsa.gov" "SE Linux binary policy API documentation"
.SH "NAME"
sepol_genusers \- Generate a new binary policy image with a customized user configuration
.SH "SYNOPSIS"
.B #include <sepol/sepol.h>
.sp
.BI "int sepol_genusers(void *" data ", size_t "len ", const char *" usersdir ", void *" newdata ", size_t *" newlen);
.sp
.BI "void sepol_set_delusers(int " on ");"

.SH "DESCRIPTION"
.B sepol_genusers
generates a new binary policy image from 
an existing binary policy image stored in the memory region described by
the starting address
.I data
and the length
.I len
and a pair of user configuration files named 
.B system.users 
and
.B local.users
from the directory specified by
.I usersdir.
The resulting binary policy is placed into dynamically allocated
memory and the variables
.I newdata
and
.I newlen
are set to refer to the new binary image's starting address and length.
The original binary policy image is not modified.

By default, 
.B sepol_genusers
will preserve user entries that are defined in the original binary policy image
but not defined in the user configuration files.  If such user entries
should instead by omitted entirely from the new binary policy image, then
the
.B sepol_set_delusers
function may be called with 
.I on
set to 1 prior to calling
.B sepol_genusers
in order to enable deletion of such users.

.SH "RETURN VALUE"
Returns 0 on success or \-1 otherwise, with errno set appropriately.
An errno of ENOENT indicates that one or both of the user
configuration files did not exist.  An errno of EINVAL indicates that
either the original binary policy image or the generated one were
invalid.  An errno of ENOMEM indicates that insufficient memory was
available to process the original binary policy image or to generate
the new policy image.  Invalid entries in the user configuration files
are skipped with a warning.