--- sysvinit-2.85/src/init.c.selgenusers 2005-02-17 19:03:08.000000000 -0500 +++ sysvinit-2.85/src/init.c 2005-02-17 19:03:49.000000000 -0500 @@ -199,9 +199,10 @@ static int load_policy(int *enforce) { int fd=-1,ret=-1; + unsigned data_size; int rc=0, orig_enforce; struct stat sb; - void *map; + void *map, *data; char policy_file[PATH_MAX]; int policy_version=0; FILE *cfg; @@ -306,8 +307,21 @@ } + ret = sepol_genusers(map, sb.st_size, selinux_users_path(), &data, &data_size); + if (ret < 0) { + if (errno == ENOENT || errno == EINVAL) { + /* No booleans file or stale booleans in the file; non-fatal. */ + log(L_VB,"Warning! Error while user configuration from %s: %s\n", selinux_users_path(), strerror(errno)); + data=map; + data_size=sb.st_size; + } else { + log(L_VB, "Error while setting user configuration from %s: %s\n", selinux_users_path(), strerror(errno)); + goto UMOUNT; + } + } + /* Set booleans based on a booleans configuration file. */ - ret = sepol_genbools(map, sb.st_size, selinux_booleans_path()); + ret = sepol_genbools(data, data_size, selinux_booleans_path()); if (ret < 0) { if (errno == ENOENT || errno == EINVAL) { /* No booleans file or stale booleans in the file; non-fatal. */ @@ -320,7 +334,7 @@ } } log(L_VB, "Loading security policy\n"); - ret=security_load_policy(map, sb.st_size); + ret=security_load_policy(data, data_size); if (ret < 0) { log(L_VB, "security_load_policy failed\n"); }