libselinux/libselinux-rhat.patch

92 lines
2.8 KiB
Diff

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 11:11:20.000000000 -0500
@@ -308,6 +308,13 @@
FILE *cfg;
char *buf;
+
+ /*
+ Reinitialize the library, so chroot will work correctly.
+ */
+ fini_selinux_policyroot();
+ init_selinux_config();
+
/*
* Get desired mode (disabled, permissive, enforcing) from
* /etc/selinux/config.
diff --exclude-from=exclude -N -u -r nsalibselinux/src/matchpathcon.c libselinux-2.0.57/src/matchpathcon.c
--- nsalibselinux/src/matchpathcon.c 2007-09-28 09:48:58.000000000 -0400
+++ libselinux-2.0.57/src/matchpathcon.c 2008-02-28 10:50:12.000000000 -0500
@@ -2,6 +2,7 @@
#include <string.h>
#include <errno.h>
#include <stdio.h>
+#include <syslog.h>
#include "selinux_internal.h"
#include "label_internal.h"
#include "callbacks.h"
@@ -57,7 +58,7 @@
{
va_list ap;
va_start(ap, fmt);
- vfprintf(stderr, fmt, ap);
+ vsyslog(LOG_ERR, fmt, ap);
va_end(ap);
}
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 11:10:01.000000000 -0500
@@ -127,9 +127,9 @@
static char *selinux_policyroot = NULL;
static char *selinux_rootpath = NULL;
-static void init_selinux_config(void) __attribute__ ((constructor));
+void init_selinux_config(void) __attribute__ ((constructor));
-static void init_selinux_config(void)
+void init_selinux_config(void)
{
int i, *intptr;
size_t line_len;
@@ -207,10 +207,11 @@
== -1)
return;
}
+hidden_def(init_selinux_config)
-static void fini_selinux_policyroot(void) __attribute__ ((destructor));
+void fini_selinux_policyroot(void) __attribute__ ((destructor));
-static void fini_selinux_policyroot(void)
+void fini_selinux_policyroot(void)
{
int i;
free(selinux_policyroot);
@@ -222,6 +223,7 @@
free(selinux_policytype);
selinux_policytype = NULL;
}
+hidden_def(fini_selinux_policyroot)
static const char *get_path(int 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 11:11:04.000000000 -0500
@@ -80,6 +80,13 @@
hidden_proto(security_get_initial_context);
hidden_proto(security_get_initial_context_raw);
+extern void init_selinux_config(void) hidden;
+extern void fini_selinux_policyroot(void) hidden;
+
+hidden_proto(init_selinux_config);
+hidden_proto(fini_selinux_policyroot);
+
extern int load_setlocaldefs hidden;
extern int require_seusers hidden;
extern int selinux_page_size hidden;
+