[libsemanage: 1/3] Add patch form Xin Ouyang to make library use private semanage.conf

Daniel J Walsh dwalsh at fedoraproject.org
Thu Mar 29 19:30:25 UTC 2012


commit 6bcdc7fca5210fe9d42af1e756b76fd4ba721db9
Author: Dan Walsh <dwalsh at redhat.com>
Date:   Fri Jan 6 09:19:58 2012 -0500

    Add patch form Xin Ouyang to make library use private semanage.conf

 libsemanage-rhat.patch |  106 ++++++++++++++++++++++++++++++++++++++++++++++++
 libsemanage.spec       |    7 ++-
 2 files changed, 111 insertions(+), 2 deletions(-)
---
diff --git a/libsemanage-rhat.patch b/libsemanage-rhat.patch
index e69de29..5757388 100644
--- a/libsemanage-rhat.patch
+++ b/libsemanage-rhat.patch
@@ -0,0 +1,106 @@
+diff --git a/libsemanage/src/handle.c b/libsemanage/src/handle.c
+index 7adc1cc..7fcd2b4 100644
+--- a/libsemanage/src/handle.c
++++ b/libsemanage/src/handle.c
+@@ -37,10 +37,12 @@
+ #include "semanage_store.h"
+ 
+ #define SEMANAGE_COMMIT_READ_WAIT 5
++#define SEMANAGE_CONF_PATH "/etc/selinux/semanage.conf"
+ 
+ #include <string.h>
+ #include <selinux/selinux.h>
+ static char *private_selinux_path = NULL;
++static char *private_semanage_conf_path = NULL;
+ static char *private_file_context_path = NULL;
+ static char *private_file_context_local_path = NULL;
+ static char *private_file_context_homedir_path = NULL;
+@@ -52,6 +54,7 @@ static char *private_policy_root = NULL;
+ 
+ void semanage_free_root() {
+ 	free(private_selinux_path); private_selinux_path = NULL;
++	free(private_semanage_conf_path); private_semanage_conf_path = NULL;
+ 	free(private_file_context_path); private_file_context_path = NULL;
+ 	free(private_file_context_local_path); private_file_context_local_path = NULL;
+ 	free(private_file_context_homedir_path); private_file_context_homedir_path = NULL;
+@@ -68,6 +71,10 @@ int semanage_set_root(const char *path) {
+ 		goto error;
+ 	}
+ 
++	if ( asprintf(&private_semanage_conf_path, "%s/%s", path, SEMANAGE_CONF_PATH) < 0 ) {
++		goto error;
++	}
++
+ 	if ( asprintf(&private_file_context_path, "%s/%s", path, selinux_file_context_path()) < 0 ) {
+ 		goto error;
+ 	}
+@@ -171,6 +178,21 @@ const char *semanage_selinux_path(void) {
+ 	return selinux_path();
+ }
+ 
++/* Return a fully-qualified path + filename to the semanage
++ * configuration file.  The caller must not alter the string returned
++ * (and hence why this function return type is const).
++ *
++ */
++
++const char *semanage_conf_path(void)
++{
++	if (private_semanage_conf_path &&
++	    access(private_semanage_conf_path, R_OK) == 0)
++		return private_semanage_conf_path;
++
++	return SEMANAGE_CONF_PATH;
++}
++
+ semanage_handle_t *semanage_handle_create(void)
+ {
+ 	semanage_handle_t *sh = NULL;
+diff --git a/libsemanage/src/handle.h b/libsemanage/src/handle.h
+index 723d811..bb12594 100644
+--- a/libsemanage/src/handle.h
++++ b/libsemanage/src/handle.h
+@@ -105,6 +105,8 @@ struct semanage_handle {
+ 	dbase_config_t dbase[DBASE_COUNT];
+ };
+ 
++const char *semanage_conf_path(void);
++
+ /* === Local modifications === */
+ static inline
+     dbase_config_t * semanage_user_base_dbase_local(semanage_handle_t * handle)
+diff --git a/libsemanage/src/semanage_store.c b/libsemanage/src/semanage_store.c
+index a223aa7..0e7b71a 100644
+--- a/libsemanage/src/semanage_store.c
++++ b/libsemanage/src/semanage_store.c
+@@ -262,18 +262,6 @@ const char *semanage_path(enum semanage_store_defs store,
+ 	return semanage_paths[store][path_name];
+ }
+ 
+-/* Return a fully-qualified path + filename to the semanage
+- * configuration file.  The caller must not alter the string returned
+- * (and hence why this function return type is const).
+- *
+- * This is going to be hard coded to /etc/selinux/semanage.conf for
+- * the time being. FIXME
+- */
+-const char *semanage_conf_path(void)
+-{
+-	return "/etc/selinux/semanage.conf";
+-}
+-
+ /**************** functions that create module store ***************/
+ 
+ /* Check that the semanage store exists.  If 'create' is non-zero then
+diff --git a/libsemanage/src/semanage_store.h b/libsemanage/src/semanage_store.h
+index b451308..98e011d 100644
+--- a/libsemanage/src/semanage_store.h
++++ b/libsemanage/src/semanage_store.h
+@@ -66,7 +66,6 @@ enum semanage_sandbox_defs {
+ /* FIXME: this needs to be made a module store specific init and the
+  * global configuration moved to another file.
+  */
+-const char *semanage_conf_path(void);
+ int semanage_check_init(const char *root);
+ 
+ extern const char *semanage_fname(enum semanage_sandbox_defs file_enum);
diff --git a/libsemanage.spec b/libsemanage.spec
index e5ec7d2..219c30c 100644
--- a/libsemanage.spec
+++ b/libsemanage.spec
@@ -5,12 +5,12 @@
 %endif
 
 %define libsepolver 2.1.4-5
-%define libselinuxver 2.1.8-5
+%define libselinuxver 2.1.9-2
 
 Summary: SELinux binary policy manipulation library 
 Name: libsemanage
 Version: 2.1.6
-Release: 1%{?dist}
+Release: 2%{?dist}
 License: LGPLv2+
 Group: System Environment/Libraries
 Source: libsemanage-%{version}.tgz
@@ -180,6 +180,9 @@ rm -rf ${RPM_BUILD_ROOT}
 %endif # if with_python3
 
 %changelog
+* Fri Jan 6 2012 Dan Walsh <dwalsh at redhat.com> - 2.1.6-2
+- Add patch form Xin Ouyang to make library use private semanage.conf 
+
 * Wed Dec 21 2011 Dan Walsh <dwalsh at redhat.com> - 2.1.6-1
 -Update to upstream
 	* add ignoredirs config for genhomedircon


More information about the scm-commits mailing list