* load_policy has to be moved to /sbin from /usr/sbin to handle initrd executing load_policy
@ 2009-09-30 17:56 Daniel J Walsh
2009-09-30 17:59 ` Stephen Smalley
0 siblings, 1 reply; 4+ messages in thread
From: Daniel J Walsh @ 2009-09-30 17:56 UTC (permalink / raw)
To: SE Linux
[-- Attachment #1: Type: text/plain, Size: 158 bytes --]
Ubunto and Fedora have moved to a model where the initrd executes load_policy -i.
This means load_policy has to be in /sbin since /usr might not be mounted.
[-- Attachment #2: load_policy.patch --]
[-- Type: text/plain, Size: 1251 bytes --]
diff --git a/libsemanage/src/conf-parse.y b/libsemanage/src/conf-parse.y
index 23661bf..16e3c30 100644
--- a/libsemanage/src/conf-parse.y
+++ b/libsemanage/src/conf-parse.y
@@ -263,7 +263,7 @@ static int semanage_conf_init(semanage_conf_t * conf)
calloc(1, sizeof(*(current_conf->load_policy)))) == NULL) {
return -1;
}
- if ((conf->load_policy->path = strdup("/usr/sbin/load_policy")) == NULL) {
+ if ((conf->load_policy->path = strdup("/sbin/load_policy")) == NULL) {
return -1;
}
conf->load_policy->args = NULL;
diff --git a/policycoreutils/load_policy/Makefile b/policycoreutils/load_policy/Makefile
index 2dd2943..91dc6c8 100644
--- a/policycoreutils/load_policy/Makefile
+++ b/policycoreutils/load_policy/Makefile
@@ -1,6 +1,7 @@
# Installation directories.
PREFIX ?= ${DESTDIR}/usr
-SBINDIR ?= $(PREFIX)/sbin
+SBINDIR ?= $(DESTDIR)/sbin
+USRSBINDIR ?= $(PREFIX)/sbin
MANDIR ?= $(PREFIX)/share/man
LOCALEDIR ?= /usr/share/locale
@@ -17,6 +18,8 @@ install: all
install -m 755 $(TARGETS) $(SBINDIR)
test -d $(MANDIR)/man8 || install -m 755 -d $(MANDIR)/man8
install -m 644 load_policy.8 $(MANDIR)/man8/
+ -mkdir -p $(USRSBINDIR)
+ ln -s /sbin/load_policy $(USRSBINDIR)/load_policy
clean:
-rm -f $(TARGETS) *.o
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: load_policy has to be moved to /sbin from /usr/sbin to handle initrd executing load_policy
2009-09-30 17:56 load_policy has to be moved to /sbin from /usr/sbin to handle initrd executing load_policy Daniel J Walsh
@ 2009-09-30 17:59 ` Stephen Smalley
2009-09-30 18:16 ` Daniel J Walsh
0 siblings, 1 reply; 4+ messages in thread
From: Stephen Smalley @ 2009-09-30 17:59 UTC (permalink / raw)
To: Daniel J Walsh; +Cc: SE Linux
On Wed, 2009-09-30 at 13:56 -0400, Daniel J Walsh wrote:
> Ubunto and Fedora have moved to a model where the initrd executes load_policy -i.
>
> This means load_policy has to be in /sbin since /usr might not be mounted.
We had a similar change happen for setfiles, and if you look a little
further down in semanage_conf_init(), you'll see that we call access()
to check whether setfiles lives in /sbin or /usr/sbin and then set it
accordingly. You'll want to do the same thing here to avoid breakage on
systems that still have it in the old location.
--
Stephen Smalley
National Security Agency
--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: load_policy has to be moved to /sbin from /usr/sbin to handle initrd executing load_policy
2009-09-30 17:59 ` Stephen Smalley
@ 2009-09-30 18:16 ` Daniel J Walsh
2009-11-10 21:16 ` Chad Sellers
0 siblings, 1 reply; 4+ messages in thread
From: Daniel J Walsh @ 2009-09-30 18:16 UTC (permalink / raw)
To: Stephen Smalley; +Cc: SE Linux
[-- Attachment #1: Type: text/plain, Size: 633 bytes --]
On 09/30/2009 01:59 PM, Stephen Smalley wrote:
> On Wed, 2009-09-30 at 13:56 -0400, Daniel J Walsh wrote:
>> Ubunto and Fedora have moved to a model where the initrd executes load_policy -i.
>>
>> This means load_policy has to be in /sbin since /usr might not be mounted.
>
> We had a similar change happen for setfiles, and if you look a little
> further down in semanage_conf_init(), you'll see that we call access()
> to check whether setfiles lives in /sbin or /usr/sbin and then set it
> accordingly. You'll want to do the same thing here to avoid breakage on
> systems that still have it in the old location.
>
Fixed patch.
[-- Attachment #2: load_policy.patch --]
[-- Type: text/plain, Size: 14604 bytes --]
diff --git a/libsemanage/src/conf-parse.y b/libsemanage/src/conf-parse.y
index 23661bf..931448f 100644
--- a/libsemanage/src/conf-parse.y
+++ b/libsemanage/src/conf-parse.y
@@ -263,7 +263,13 @@ static int semanage_conf_init(semanage_conf_t * conf)
calloc(1, sizeof(*(current_conf->load_policy)))) == NULL) {
return -1;
}
- if ((conf->load_policy->path = strdup("/usr/sbin/load_policy")) == NULL) {
+
+ if (access("/sbin/load_policy", X_OK) == 0) {
+ conf->load_policy->path = strdup("/sbin/load_policy");
+ } else {
+ conf->load_policy->path = strdup("/usr/sbin/load_policy");
+ }
+ if (conf->load_policy->path == NULL)
return -1;
}
conf->load_policy->args = NULL;
diff --git a/libsemanage/src/semanage.py b/libsemanage/src/semanage.py
index 7c05df9..29208dd 100644
--- a/libsemanage/src/semanage.py
+++ b/libsemanage/src/semanage.py
@@ -1,5 +1,5 @@
# This file was automatically generated by SWIG (http://www.swig.org).
-# Version 1.3.39
+# Version 1.3.40
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.
@@ -21,7 +21,7 @@ if version_info >= (2,6,0):
_mod = imp.load_module('_semanage', fp, pathname, description)
finally:
fp.close()
- return _mod
+ return _mod
_semanage = swig_import_helper()
del swig_import_helper
else:
@@ -184,6 +184,14 @@ def semanage_module_install_base_file(*args):
return _semanage.semanage_module_install_base_file(*args)
semanage_module_install_base_file = _semanage.semanage_module_install_base_file
+def semanage_module_enable(*args):
+ return _semanage.semanage_module_enable(*args)
+semanage_module_enable = _semanage.semanage_module_enable
+
+def semanage_module_disable(*args):
+ return _semanage.semanage_module_disable(*args)
+semanage_module_disable = _semanage.semanage_module_disable
+
def semanage_module_remove(*args):
return _semanage.semanage_module_remove(*args)
semanage_module_remove = _semanage.semanage_module_remove
@@ -208,6 +216,10 @@ def semanage_module_get_version(*args):
return _semanage.semanage_module_get_version(*args)
semanage_module_get_version = _semanage.semanage_module_get_version
+def semanage_module_get_enabled(*args):
+ return _semanage.semanage_module_get_enabled(*args)
+semanage_module_get_enabled = _semanage.semanage_module_get_enabled
+
def semanage_context_get_user(*args):
return _semanage.semanage_context_get_user(*args)
semanage_context_get_user = _semanage.semanage_context_get_user
diff --git a/libsemanage/src/semanageswig_wrap.c b/libsemanage/src/semanageswig_wrap.c
index 09e12aa..2e8946c 100644
--- a/libsemanage/src/semanageswig_wrap.c
+++ b/libsemanage/src/semanageswig_wrap.c
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------------
* This file was automatically generated by SWIG (http://www.swig.org).
- * Version 1.3.39
+ * Version 1.3.40
*
* This file is not intended to be easily readable and contains a number of
* coding conventions designed to improve portability and efficiency. Do not make
@@ -725,7 +725,7 @@ SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
-/* Compatibility marcos for Python 3 */
+/* Compatibility macros for Python 3 */
#if PY_VERSION_HEX >= 0x03000000
#define PyClass_Check(obj) PyObject_IsInstance(obj, (PyObject *)&PyType_Type)
@@ -758,7 +758,7 @@ SWIG_Python_str_AsChar(PyObject *str)
#if PY_VERSION_HEX >= 0x03000000
char *cstr;
char *newstr;
- int len;
+ Py_ssize_t len;
str = PyUnicode_AsUTF8String(str);
PyBytes_AsStringAndSize(str, &cstr, &len);
newstr = (char *) malloc(len+1);
@@ -1448,9 +1448,7 @@ SwigPyObject_repr(SwigPyObject *v, PyObject *args)
#endif
{
const char *name = SWIG_TypePrettyName(v->ty);
- PyObject *hex = SwigPyObject_hex(v);
- PyObject *repr = SWIG_Python_str_FromFormat("<Swig Object of type '%s' at %p>", name, hex);
- Py_DECREF(hex);
+ PyObject *repr = SWIG_Python_str_FromFormat("<Swig Object of type '%s' at %p>", name, v);
if (v->next) {
#ifdef METH_NOARGS
PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next);
@@ -1505,7 +1503,7 @@ SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w)
return (i < j) ? -1 : ((i > j) ? 1 : 0);
}
-/* Added for Python 3.x, whould it also useful for Python 2.x? */
+/* Added for Python 3.x, would it also be useful for Python 2.x? */
SWIGRUNTIME PyObject*
SwigPyObject_richcompare(SwigPyObject *v, SwigPyObject *w, int op)
{
@@ -1553,7 +1551,7 @@ SwigPyObject_dealloc(PyObject *v)
/* destroy is always a VARARGS method */
PyObject *res;
if (data->delargs) {
- /* we need to create a temporal object to carry the destroy operation */
+ /* we need to create a temporary object to carry the destroy operation */
PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0);
res = SWIG_Python_CallFunctor(destroy, tmp);
Py_DECREF(tmp);
@@ -1754,7 +1752,7 @@ _PySwigObject_type(void) {
if (!type_init) {
const PyTypeObject tmp
= {
- /* PyOjbect header changed in Python 3 */
+ /* PyObject header changed in Python 3 */
#if PY_VERSION_HEX >= 0x03000000
PyVarObject_HEAD_INIT(&PyType_Type, 0)
#else
@@ -1773,7 +1771,7 @@ _PySwigObject_type(void) {
#endif
(setattrfunc)0, /* tp_setattr */
#if PY_VERSION_HEX >= 0x03000000
- 0, /* tp_reserved in 3.0.1 */
+ 0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
#else
(cmpfunc)SwigPyObject_compare, /* tp_compare */
#endif
@@ -1823,7 +1821,7 @@ _PySwigObject_type(void) {
#endif
};
swigpyobject_type = tmp;
- /* for Python 3 we already assigned the ob_type in PyVarObject_HEAD_INIT() */
+ /* for Python 3 we already assigned ob_type in PyVarObject_HEAD_INIT() */
#if PY_VERSION_HEX < 0x03000000
swigpyobject_type.ob_type = &PyType_Type;
#endif
@@ -2230,10 +2228,10 @@ SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) {
/* here we get the method pointer for callbacks */
const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0;
- if (desc) {
+ if (desc)
desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0;
- if (!desc) return SWIG_ERROR;
- }
+ if (!desc)
+ return SWIG_ERROR;
if (ty) {
swig_cast_info *tc = SWIG_TypeCheck(desc,ty);
if (tc) {
@@ -2271,7 +2269,7 @@ SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *t
* ----------------------------------------------------------------------------- */
/*
- Create a new instance object, whitout calling __init__, and set the
+ Create a new instance object, without calling __init__, and set the
'this' attribute.
*/
@@ -2739,7 +2737,7 @@ static swig_module_info swig_module = {swig_types, 54, 0, 0, 0, 0};
#endif
#define SWIG_name "_semanage"
-#define SWIGVERSION 0x010339
+#define SWIGVERSION 0x010340
#define SWIG_VERSION SWIGVERSION
@@ -3912,6 +3910,74 @@ fail:
}
+SWIGINTERN PyObject *_wrap_semanage_module_enable(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ semanage_handle_t *arg1 = (semanage_handle_t *) 0 ;
+ char *arg2 = (char *) 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ int res2 ;
+ char *buf2 = 0 ;
+ int alloc2 = 0 ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ int result;
+
+ if (!PyArg_ParseTuple(args,(char *)"OO:semanage_module_enable",&obj0,&obj1)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_semanage_handle, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "semanage_module_enable" "', argument " "1"" of type '" "semanage_handle_t *""'");
+ }
+ arg1 = (semanage_handle_t *)(argp1);
+ res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
+ if (!SWIG_IsOK(res2)) {
+ SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "semanage_module_enable" "', argument " "2"" of type '" "char *""'");
+ }
+ arg2 = (char *)(buf2);
+ result = (int)semanage_module_enable(arg1,arg2);
+ resultobj = SWIG_From_int((int)(result));
+ if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
+ return resultobj;
+fail:
+ if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
+ return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_semanage_module_disable(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ semanage_handle_t *arg1 = (semanage_handle_t *) 0 ;
+ char *arg2 = (char *) 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ int res2 ;
+ char *buf2 = 0 ;
+ int alloc2 = 0 ;
+ PyObject * obj0 = 0 ;
+ PyObject * obj1 = 0 ;
+ int result;
+
+ if (!PyArg_ParseTuple(args,(char *)"OO:semanage_module_disable",&obj0,&obj1)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_semanage_handle, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "semanage_module_disable" "', argument " "1"" of type '" "semanage_handle_t *""'");
+ }
+ arg1 = (semanage_handle_t *)(argp1);
+ res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
+ if (!SWIG_IsOK(res2)) {
+ SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "semanage_module_disable" "', argument " "2"" of type '" "char *""'");
+ }
+ arg2 = (char *)(buf2);
+ result = (int)semanage_module_disable(arg1,arg2);
+ resultobj = SWIG_From_int((int)(result));
+ if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
+ return resultobj;
+fail:
+ if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
+ return NULL;
+}
+
+
SWIGINTERN PyObject *_wrap_semanage_module_remove(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
semanage_handle_t *arg1 = (semanage_handle_t *) 0 ;
@@ -4082,6 +4148,28 @@ fail:
}
+SWIGINTERN PyObject *_wrap_semanage_module_get_enabled(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+ PyObject *resultobj = 0;
+ semanage_module_info_t *arg1 = (semanage_module_info_t *) 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+ PyObject * obj0 = 0 ;
+ int result;
+
+ if (!PyArg_ParseTuple(args,(char *)"O:semanage_module_get_enabled",&obj0)) SWIG_fail;
+ res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_semanage_module_info, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "semanage_module_get_enabled" "', argument " "1"" of type '" "semanage_module_info_t *""'");
+ }
+ arg1 = (semanage_module_info_t *)(argp1);
+ result = (int)semanage_module_get_enabled(arg1);
+ resultobj = SWIG_From_int((int)(result));
+ return resultobj;
+fail:
+ return NULL;
+}
+
+
SWIGINTERN PyObject *_wrap_semanage_context_get_user(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
semanage_context_t *arg1 = (semanage_context_t *) 0 ;
@@ -11783,12 +11871,15 @@ static PyMethodDef SwigMethods[] = {
{ (char *)"semanage_module_upgrade_file", _wrap_semanage_module_upgrade_file, METH_VARARGS, NULL},
{ (char *)"semanage_module_install_base", _wrap_semanage_module_install_base, METH_VARARGS, NULL},
{ (char *)"semanage_module_install_base_file", _wrap_semanage_module_install_base_file, METH_VARARGS, NULL},
+ { (char *)"semanage_module_enable", _wrap_semanage_module_enable, METH_VARARGS, NULL},
+ { (char *)"semanage_module_disable", _wrap_semanage_module_disable, METH_VARARGS, NULL},
{ (char *)"semanage_module_remove", _wrap_semanage_module_remove, METH_VARARGS, NULL},
{ (char *)"semanage_module_list", _wrap_semanage_module_list, METH_VARARGS, NULL},
{ (char *)"semanage_module_info_datum_destroy", _wrap_semanage_module_info_datum_destroy, METH_VARARGS, NULL},
{ (char *)"semanage_module_list_nth", _wrap_semanage_module_list_nth, METH_VARARGS, NULL},
{ (char *)"semanage_module_get_name", _wrap_semanage_module_get_name, METH_VARARGS, NULL},
{ (char *)"semanage_module_get_version", _wrap_semanage_module_get_version, METH_VARARGS, NULL},
+ { (char *)"semanage_module_get_enabled", _wrap_semanage_module_get_enabled, METH_VARARGS, NULL},
{ (char *)"semanage_context_get_user", _wrap_semanage_context_get_user, METH_VARARGS, NULL},
{ (char *)"semanage_context_set_user", _wrap_semanage_context_set_user, METH_VARARGS, NULL},
{ (char *)"semanage_context_get_role", _wrap_semanage_context_get_role, METH_VARARGS, NULL},
@@ -12631,7 +12722,7 @@ extern "C" {
(char *)"swigvarlink", /* Type name (tp_name) */
sizeof(swig_varlinkobject), /* Basic size (tp_basicsize) */
0, /* Itemsize (tp_itemsize) */
- (destructor) swig_varlink_dealloc, /* Deallocator (tp_dealloc) */
+ (destructor) swig_varlink_dealloc, /* Deallocator (tp_dealloc) */
(printfunc) swig_varlink_print, /* Print (tp_print) */
(getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */
(setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */
@@ -12642,7 +12733,7 @@ extern "C" {
0, /* tp_as_mapping */
0, /* tp_hash */
0, /* tp_call */
- (reprfunc)swig_varlink_str, /* tp_str */
+ (reprfunc) swig_varlink_str, /* tp_str */
0, /* tp_getattro */
0, /* tp_setattro */
0, /* tp_as_buffer */
@@ -12663,7 +12754,7 @@ extern "C" {
#endif
};
varlink_type = tmp;
- /* for Python 3 we already assigned the ob_type in PyVarObject_HEAD_INIT() */
+ /* for Python 3 we already assigned ob_type in PyVarObject_HEAD_INIT() */
#if PY_VERSION_HEX < 0x03000000
varlink_type.ob_type = &PyType_Type;
#endif
diff --git a/policycoreutils/load_policy/Makefile b/policycoreutils/load_policy/Makefile
index 2dd2943..91dc6c8 100644
--- a/policycoreutils/load_policy/Makefile
+++ b/policycoreutils/load_policy/Makefile
@@ -1,6 +1,7 @@
# Installation directories.
PREFIX ?= ${DESTDIR}/usr
-SBINDIR ?= $(PREFIX)/sbin
+SBINDIR ?= $(DESTDIR)/sbin
+USRSBINDIR ?= $(PREFIX)/sbin
MANDIR ?= $(PREFIX)/share/man
LOCALEDIR ?= /usr/share/locale
@@ -17,6 +18,8 @@ install: all
install -m 755 $(TARGETS) $(SBINDIR)
test -d $(MANDIR)/man8 || install -m 755 -d $(MANDIR)/man8
install -m 644 load_policy.8 $(MANDIR)/man8/
+ -mkdir -p $(USRSBINDIR)
+ ln -s /sbin/load_policy $(USRSBINDIR)/load_policy
clean:
-rm -f $(TARGETS) *.o
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: load_policy has to be moved to /sbin from /usr/sbin to handle initrd executing load_policy
2009-09-30 18:16 ` Daniel J Walsh
@ 2009-11-10 21:16 ` Chad Sellers
0 siblings, 0 replies; 4+ messages in thread
From: Chad Sellers @ 2009-11-10 21:16 UTC (permalink / raw)
To: Daniel J Walsh; +Cc: SE Linux, Stephen Smalley
On 9/30/09 2:16 PM, "Daniel J Walsh" <dwalsh@redhat.com> wrote:
> On 09/30/2009 01:59 PM, Stephen Smalley wrote:
>> On Wed, 2009-09-30 at 13:56 -0400, Daniel J Walsh wrote:
>>> Ubunto and Fedora have moved to a model where the initrd executes
>>> load_policy -i.
>>>
>>> This means load_policy has to be in /sbin since /usr might not be mounted.
>>
>> We had a similar change happen for setfiles, and if you look a little
>> further down in semanage_conf_init(), you'll see that we call access()
>> to check whether setfiles lives in /sbin or /usr/sbin and then set it
>> accordingly. You'll want to do the same thing here to avoid breakage on
>> systems that still have it in the old location.
>>
> Fixed patch.
>
> diff --git a/libsemanage/src/conf-parse.y b/libsemanage/src/conf-parse.y
> index 23661bf..931448f 100644
> --- a/libsemanage/src/conf-parse.y
> +++ b/libsemanage/src/conf-parse.y
> @@ -263,7 +263,13 @@ static int semanage_conf_init(semanage_conf_t * conf)
> calloc(1, sizeof(*(current_conf->load_policy)))) == NULL) {
> return -1;
> }
> - if ((conf->load_policy->path = strdup("/usr/sbin/load_policy")) == NULL)
> {
> +
> + if (access("/sbin/load_policy", X_OK) == 0) {
> + conf->load_policy->path = strdup("/sbin/load_policy");
> + } else {
> + conf->load_policy->path = strdup("/usr/sbin/load_policy");
> + }
> + if (conf->load_policy->path == NULL)
You're missing a { there (meaning this doesn't compile...).
> return -1;
> }
> conf->load_policy->args = NULL;
> diff --git a/libsemanage/src/semanage.py b/libsemanage/src/semanage.py
> index 7c05df9..29208dd 100644
> --- a/libsemanage/src/semanage.py
> +++ b/libsemanage/src/semanage.py
Did you mean to include all the python stuff here? I'm guessing that was
included by accident?
> @@ -1,5 +1,5 @@
> # This file was automatically generated by SWIG (http://www.swig.org).
> -# Version 1.3.39
> +# Version 1.3.40
> #
> # Do not make changes to this file unless you know what you are doing--modify
> # the SWIG interface file instead.
> @@ -21,7 +21,7 @@ if version_info >= (2,6,0):
> _mod = imp.load_module('_semanage', fp, pathname,
> description)
> finally:
> fp.close()
> - return _mod
> + return _mod
> _semanage = swig_import_helper()
> del swig_import_helper
> else:
> @@ -184,6 +184,14 @@ def semanage_module_install_base_file(*args):
> return _semanage.semanage_module_install_base_file(*args)
> semanage_module_install_base_file =
> _semanage.semanage_module_install_base_file
>
> +def semanage_module_enable(*args):
> + return _semanage.semanage_module_enable(*args)
> +semanage_module_enable = _semanage.semanage_module_enable
> +
> +def semanage_module_disable(*args):
> + return _semanage.semanage_module_disable(*args)
> +semanage_module_disable = _semanage.semanage_module_disable
> +
> def semanage_module_remove(*args):
> return _semanage.semanage_module_remove(*args)
> semanage_module_remove = _semanage.semanage_module_remove
> @@ -208,6 +216,10 @@ def semanage_module_get_version(*args):
> return _semanage.semanage_module_get_version(*args)
> semanage_module_get_version = _semanage.semanage_module_get_version
>
> +def semanage_module_get_enabled(*args):
> + return _semanage.semanage_module_get_enabled(*args)
> +semanage_module_get_enabled = _semanage.semanage_module_get_enabled
> +
> def semanage_context_get_user(*args):
> return _semanage.semanage_context_get_user(*args)
> semanage_context_get_user = _semanage.semanage_context_get_user
> diff --git a/libsemanage/src/semanageswig_wrap.c
> b/libsemanage/src/semanageswig_wrap.c
> index 09e12aa..2e8946c 100644
> --- a/libsemanage/src/semanageswig_wrap.c
> +++ b/libsemanage/src/semanageswig_wrap.c
> @@ -1,6 +1,6 @@
> /*
> ----------------------------------------------------------------------------
> * This file was automatically generated by SWIG (http://www.swig.org).
> - * Version 1.3.39
> + * Version 1.3.40
> *
> * This file is not intended to be easily readable and contains a number of
> * coding conventions designed to improve portability and efficiency. Do not
> make
> @@ -725,7 +725,7 @@ SWIG_UnpackDataName(const char *c, void *ptr, size_t sz,
> const char *name) {
>
>
>
> -/* Compatibility marcos for Python 3 */
> +/* Compatibility macros for Python 3 */
> #if PY_VERSION_HEX >= 0x03000000
>
> #define PyClass_Check(obj) PyObject_IsInstance(obj, (PyObject *)&PyType_Type)
> @@ -758,7 +758,7 @@ SWIG_Python_str_AsChar(PyObject *str)
> #if PY_VERSION_HEX >= 0x03000000
> char *cstr;
> char *newstr;
> - int len;
> + Py_ssize_t len;
> str = PyUnicode_AsUTF8String(str);
> PyBytes_AsStringAndSize(str, &cstr, &len);
> newstr = (char *) malloc(len+1);
> @@ -1448,9 +1448,7 @@ SwigPyObject_repr(SwigPyObject *v, PyObject *args)
> #endif
> {
> const char *name = SWIG_TypePrettyName(v->ty);
> - PyObject *hex = SwigPyObject_hex(v);
> - PyObject *repr = SWIG_Python_str_FromFormat("<Swig Object of type '%s' at
> %p>", name, hex);
> - Py_DECREF(hex);
> + PyObject *repr = SWIG_Python_str_FromFormat("<Swig Object of type '%s' at
> %p>", name, v);
> if (v->next) {
> #ifdef METH_NOARGS
> PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next);
> @@ -1505,7 +1503,7 @@ SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w)
> return (i < j) ? -1 : ((i > j) ? 1 : 0);
> }
>
> -/* Added for Python 3.x, whould it also useful for Python 2.x? */
> +/* Added for Python 3.x, would it also be useful for Python 2.x? */
> SWIGRUNTIME PyObject*
> SwigPyObject_richcompare(SwigPyObject *v, SwigPyObject *w, int op)
> {
> @@ -1553,7 +1551,7 @@ SwigPyObject_dealloc(PyObject *v)
> /* destroy is always a VARARGS method */
> PyObject *res;
> if (data->delargs) {
> - /* we need to create a temporal object to carry the destroy operation */
> + /* we need to create a temporary object to carry the destroy operation */
> PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0);
> res = SWIG_Python_CallFunctor(destroy, tmp);
> Py_DECREF(tmp);
> @@ -1754,7 +1752,7 @@ _PySwigObject_type(void) {
> if (!type_init) {
> const PyTypeObject tmp
> = {
> - /* PyOjbect header changed in Python 3 */
> + /* PyObject header changed in Python 3 */
> #if PY_VERSION_HEX >= 0x03000000
> PyVarObject_HEAD_INIT(&PyType_Type, 0)
> #else
> @@ -1773,7 +1771,7 @@ _PySwigObject_type(void) {
> #endif
> (setattrfunc)0, /* tp_setattr */
> #if PY_VERSION_HEX >= 0x03000000
> - 0, /* tp_reserved in 3.0.1 */
> + 0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
> #else
> (cmpfunc)SwigPyObject_compare, /* tp_compare */
> #endif
> @@ -1823,7 +1821,7 @@ _PySwigObject_type(void) {
> #endif
> };
> swigpyobject_type = tmp;
> - /* for Python 3 we already assigned the ob_type in
> PyVarObject_HEAD_INIT() */
> + /* for Python 3 we already assigned ob_type in PyVarObject_HEAD_INIT() */
> #if PY_VERSION_HEX < 0x03000000
> swigpyobject_type.ob_type = &PyType_Type;
> #endif
> @@ -2230,10 +2228,10 @@ SWIG_Python_ConvertFunctionPtr(PyObject *obj, void
> **ptr, swig_type_info *ty) {
> /* here we get the method pointer for callbacks */
> const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
> const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0;
> - if (desc) {
> + if (desc)
> desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0;
> - if (!desc) return SWIG_ERROR;
> - }
> + if (!desc)
> + return SWIG_ERROR;
> if (ty) {
> swig_cast_info *tc = SWIG_TypeCheck(desc,ty);
> if (tc) {
> @@ -2271,7 +2269,7 @@ SWIG_Python_ConvertPacked(PyObject *obj, void *ptr,
> size_t sz, swig_type_info *t
> *
> -----------------------------------------------------------------------------
> */
>
> /*
> - Create a new instance object, whitout calling __init__, and set the
> + Create a new instance object, without calling __init__, and set the
> 'this' attribute.
> */
>
> @@ -2739,7 +2737,7 @@ static swig_module_info swig_module = {swig_types, 54,
> 0, 0, 0, 0};
> #endif
> #define SWIG_name "_semanage"
>
> -#define SWIGVERSION 0x010339
> +#define SWIGVERSION 0x010340
> #define SWIG_VERSION SWIGVERSION
>
>
> @@ -3912,6 +3910,74 @@ fail:
> }
>
>
> +SWIGINTERN PyObject *_wrap_semanage_module_enable(PyObject
> *SWIGUNUSEDPARM(self), PyObject *args) {
> + PyObject *resultobj = 0;
> + semanage_handle_t *arg1 = (semanage_handle_t *) 0 ;
> + char *arg2 = (char *) 0 ;
> + void *argp1 = 0 ;
> + int res1 = 0 ;
> + int res2 ;
> + char *buf2 = 0 ;
> + int alloc2 = 0 ;
> + PyObject * obj0 = 0 ;
> + PyObject * obj1 = 0 ;
> + int result;
> +
> + if (!PyArg_ParseTuple(args,(char
> *)"OO:semanage_module_enable",&obj0,&obj1)) SWIG_fail;
> + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_semanage_handle, 0 | 0 );
> + if (!SWIG_IsOK(res1)) {
> + SWIG_exception_fail(SWIG_ArgError(res1), "in method '"
> "semanage_module_enable" "', argument " "1"" of type '" "semanage_handle_t
> *""'");
> + }
> + arg1 = (semanage_handle_t *)(argp1);
> + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
> + if (!SWIG_IsOK(res2)) {
> + SWIG_exception_fail(SWIG_ArgError(res2), "in method '"
> "semanage_module_enable" "', argument " "2"" of type '" "char *""'");
> + }
> + arg2 = (char *)(buf2);
> + result = (int)semanage_module_enable(arg1,arg2);
> + resultobj = SWIG_From_int((int)(result));
> + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
> + return resultobj;
> +fail:
> + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
> + return NULL;
> +}
> +
> +
> +SWIGINTERN PyObject *_wrap_semanage_module_disable(PyObject
> *SWIGUNUSEDPARM(self), PyObject *args) {
> + PyObject *resultobj = 0;
> + semanage_handle_t *arg1 = (semanage_handle_t *) 0 ;
> + char *arg2 = (char *) 0 ;
> + void *argp1 = 0 ;
> + int res1 = 0 ;
> + int res2 ;
> + char *buf2 = 0 ;
> + int alloc2 = 0 ;
> + PyObject * obj0 = 0 ;
> + PyObject * obj1 = 0 ;
> + int result;
> +
> + if (!PyArg_ParseTuple(args,(char
> *)"OO:semanage_module_disable",&obj0,&obj1)) SWIG_fail;
> + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_semanage_handle, 0 | 0 );
> + if (!SWIG_IsOK(res1)) {
> + SWIG_exception_fail(SWIG_ArgError(res1), "in method '"
> "semanage_module_disable" "', argument " "1"" of type '" "semanage_handle_t
> *""'");
> + }
> + arg1 = (semanage_handle_t *)(argp1);
> + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2);
> + if (!SWIG_IsOK(res2)) {
> + SWIG_exception_fail(SWIG_ArgError(res2), "in method '"
> "semanage_module_disable" "', argument " "2"" of type '" "char *""'");
> + }
> + arg2 = (char *)(buf2);
> + result = (int)semanage_module_disable(arg1,arg2);
> + resultobj = SWIG_From_int((int)(result));
> + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
> + return resultobj;
> +fail:
> + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
> + return NULL;
> +}
> +
> +
> SWIGINTERN PyObject *_wrap_semanage_module_remove(PyObject
> *SWIGUNUSEDPARM(self), PyObject *args) {
> PyObject *resultobj = 0;
> semanage_handle_t *arg1 = (semanage_handle_t *) 0 ;
> @@ -4082,6 +4148,28 @@ fail:
> }
>
>
> +SWIGINTERN PyObject *_wrap_semanage_module_get_enabled(PyObject
> *SWIGUNUSEDPARM(self), PyObject *args) {
> + PyObject *resultobj = 0;
> + semanage_module_info_t *arg1 = (semanage_module_info_t *) 0 ;
> + void *argp1 = 0 ;
> + int res1 = 0 ;
> + PyObject * obj0 = 0 ;
> + int result;
> +
> + if (!PyArg_ParseTuple(args,(char *)"O:semanage_module_get_enabled",&obj0))
> SWIG_fail;
> + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_semanage_module_info, 0 | 0
> );
> + if (!SWIG_IsOK(res1)) {
> + SWIG_exception_fail(SWIG_ArgError(res1), "in method '"
> "semanage_module_get_enabled" "', argument " "1"" of type '"
> "semanage_module_info_t *""'");
> + }
> + arg1 = (semanage_module_info_t *)(argp1);
> + result = (int)semanage_module_get_enabled(arg1);
> + resultobj = SWIG_From_int((int)(result));
> + return resultobj;
> +fail:
> + return NULL;
> +}
> +
> +
> SWIGINTERN PyObject *_wrap_semanage_context_get_user(PyObject
> *SWIGUNUSEDPARM(self), PyObject *args) {
> PyObject *resultobj = 0;
> semanage_context_t *arg1 = (semanage_context_t *) 0 ;
> @@ -11783,12 +11871,15 @@ static PyMethodDef SwigMethods[] = {
> { (char *)"semanage_module_upgrade_file",
> _wrap_semanage_module_upgrade_file, METH_VARARGS, NULL},
> { (char *)"semanage_module_install_base",
> _wrap_semanage_module_install_base, METH_VARARGS, NULL},
> { (char *)"semanage_module_install_base_file",
> _wrap_semanage_module_install_base_file, METH_VARARGS, NULL},
> + { (char *)"semanage_module_enable", _wrap_semanage_module_enable,
> METH_VARARGS, NULL},
> + { (char *)"semanage_module_disable", _wrap_semanage_module_disable,
> METH_VARARGS, NULL},
> { (char *)"semanage_module_remove", _wrap_semanage_module_remove,
> METH_VARARGS, NULL},
> { (char *)"semanage_module_list", _wrap_semanage_module_list,
> METH_VARARGS, NULL},
> { (char *)"semanage_module_info_datum_destroy",
> _wrap_semanage_module_info_datum_destroy, METH_VARARGS, NULL},
> { (char *)"semanage_module_list_nth", _wrap_semanage_module_list_nth,
> METH_VARARGS, NULL},
> { (char *)"semanage_module_get_name", _wrap_semanage_module_get_name,
> METH_VARARGS, NULL},
> { (char *)"semanage_module_get_version",
> _wrap_semanage_module_get_version, METH_VARARGS, NULL},
> + { (char *)"semanage_module_get_enabled",
> _wrap_semanage_module_get_enabled, METH_VARARGS, NULL},
> { (char *)"semanage_context_get_user", _wrap_semanage_context_get_user,
> METH_VARARGS, NULL},
> { (char *)"semanage_context_set_user", _wrap_semanage_context_set_user,
> METH_VARARGS, NULL},
> { (char *)"semanage_context_get_role", _wrap_semanage_context_get_role,
> METH_VARARGS, NULL},
> @@ -12631,7 +12722,7 @@ extern "C" {
> (char *)"swigvarlink", /* Type name (tp_name) */
> sizeof(swig_varlinkobject), /* Basic size (tp_basicsize) */
> 0, /* Itemsize (tp_itemsize) */
> - (destructor) swig_varlink_dealloc, /* Deallocator (tp_dealloc) */
> + (destructor) swig_varlink_dealloc, /* Deallocator (tp_dealloc) */
> (printfunc) swig_varlink_print, /* Print (tp_print) */
> (getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */
> (setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */
> @@ -12642,7 +12733,7 @@ extern "C" {
> 0, /* tp_as_mapping */
> 0, /* tp_hash */
> 0, /* tp_call */
> - (reprfunc)swig_varlink_str, /* tp_str */
> + (reprfunc) swig_varlink_str, /* tp_str */
> 0, /* tp_getattro */
> 0, /* tp_setattro */
> 0, /* tp_as_buffer */
> @@ -12663,7 +12754,7 @@ extern "C" {
> #endif
> };
> varlink_type = tmp;
> - /* for Python 3 we already assigned the ob_type in
> PyVarObject_HEAD_INIT() */
> + /* for Python 3 we already assigned ob_type in PyVarObject_HEAD_INIT()
> */
> #if PY_VERSION_HEX < 0x03000000
> varlink_type.ob_type = &PyType_Type;
> #endif
> diff --git a/policycoreutils/load_policy/Makefile
> b/policycoreutils/load_policy/Makefile
> index 2dd2943..91dc6c8 100644
> --- a/policycoreutils/load_policy/Makefile
> +++ b/policycoreutils/load_policy/Makefile
> @@ -1,6 +1,7 @@
> # Installation directories.
> PREFIX ?= ${DESTDIR}/usr
> -SBINDIR ?= $(PREFIX)/sbin
> +SBINDIR ?= $(DESTDIR)/sbin
> +USRSBINDIR ?= $(PREFIX)/sbin
> MANDIR ?= $(PREFIX)/share/man
> LOCALEDIR ?= /usr/share/locale
>
> @@ -17,6 +18,8 @@ install: all
> install -m 755 $(TARGETS) $(SBINDIR)
> test -d $(MANDIR)/man8 || install -m 755 -d $(MANDIR)/man8
> install -m 644 load_policy.8 $(MANDIR)/man8/
> + -mkdir -p $(USRSBINDIR)
> + ln -s /sbin/load_policy $(USRSBINDIR)/load_policy
>
Shouldn't that be ln -sf, to make sure we blow away any old version of load
policy that might exist in /usr/sbin?
> clean:
> -rm -f $(TARGETS) *.o
Assuming you don't want the python stuff, I can make the other two fixes and
merge.
Thanks,
Chad
--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-11-10 21:16 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-30 17:56 load_policy has to be moved to /sbin from /usr/sbin to handle initrd executing load_policy Daniel J Walsh
2009-09-30 17:59 ` Stephen Smalley
2009-09-30 18:16 ` Daniel J Walsh
2009-11-10 21:16 ` Chad Sellers
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.