diff --exclude-from=exclude -N -u -r nsalibselinux/src/load_policy.c libselinux-2.0.57/src/load_policy.c --- nsalibselinux/src/load_policy.c 2008-02-13 11:16:14.000000000 -0500 +++ libselinux-2.0.57/src/load_policy.c 2008-02-28 14:30:24.000000000 -0500 @@ -308,6 +308,12 @@ FILE *cfg; char *buf; + + /* + Reinitialize the library, so chroot will work correctly. + */ + reset_selinux_config(); + /* * Get desired mode (disabled, permissive, enforcing) from * /etc/selinux/config. diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinux_config.c libselinux-2.0.57/src/selinux_config.c --- nsalibselinux/src/selinux_config.c 2007-08-03 16:02:56.000000000 -0400 +++ libselinux-2.0.57/src/selinux_config.c 2008-02-28 14:33:02.000000000 -0500 @@ -223,6 +223,12 @@ selinux_policytype = NULL; } +void reset_selinux_config(void) +{ + fini_selinux_policyroot(); + init_selinux_config(); +} + static const char *get_path(int idx) { return file_paths[idx]; diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinux_internal.h libselinux-2.0.57/src/selinux_internal.h --- nsalibselinux/src/selinux_internal.h 2007-08-03 16:02:56.000000000 -0400 +++ libselinux-2.0.57/src/selinux_internal.h 2008-02-28 14:30:24.000000000 -0500 @@ -80,6 +80,7 @@ hidden_proto(security_get_initial_context); hidden_proto(security_get_initial_context_raw); +extern void reset_selinux_config(void) hidden; extern int load_setlocaldefs hidden; extern int require_seusers hidden; extern int selinux_page_size hidden;