diff --git a/.cvsignore b/.cvsignore index d02b4e1..fbe1c8e 100644 --- a/.cvsignore +++ b/.cvsignore @@ -118,3 +118,4 @@ libselinux-2.0.11.tgz libselinux-2.0.12.tgz libselinux-2.0.13.tgz libselinux-2.0.14.tgz +libselinux-2.0.16.tgz diff --git a/libselinux-rhat.patch b/libselinux-rhat.patch index 9e03e0f..9018461 100644 --- a/libselinux-rhat.patch +++ b/libselinux-rhat.patch @@ -1,1227 +1,40 @@ -diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinux.py libselinux-2.0.13/src/selinux.py ---- nsalibselinux/src/selinux.py 2007-02-22 08:53:23.000000000 -0500 -+++ libselinux-2.0.13/src/selinux.py 2007-04-23 10:26:41.000000000 -0400 -@@ -48,8 +48,19 @@ - del types - - -+SELINUX_DEFAULTUSER = _selinux.SELINUX_DEFAULTUSER -+get_ordered_context_list = _selinux.get_ordered_context_list -+get_ordered_context_list_with_level = _selinux.get_ordered_context_list_with_level -+get_default_context = _selinux.get_default_context -+get_default_context_with_level = _selinux.get_default_context_with_level -+get_default_context_with_role = _selinux.get_default_context_with_role -+get_default_context_with_rolelevel = _selinux.get_default_context_with_rolelevel -+query_user_context = _selinux.query_user_context -+manual_user_enter_context = _selinux.manual_user_enter_context - is_selinux_enabled = _selinux.is_selinux_enabled - is_selinux_mls_enabled = _selinux.is_selinux_mls_enabled -+freecon = _selinux.freecon -+freeconary = _selinux.freeconary - getcon = _selinux.getcon - setcon = _selinux.setcon - getpidcon = _selinux.getpidcon -@@ -88,6 +99,8 @@ - set_matchpathcon_flags = _selinux.set_matchpathcon_flags - matchpathcon_init = _selinux.matchpathcon_init - matchpathcon = _selinux.matchpathcon -+matchpathcon_init_prefix = _selinux.matchpathcon_init_prefix -+matchpathcon_fini = _selinux.matchpathcon_fini - matchmediacon = _selinux.matchmediacon - selinux_getenforcemode = _selinux.selinux_getenforcemode - selinux_policy_root = _selinux.selinux_policy_root -@@ -102,6 +115,7 @@ - selinux_homedir_context_path = _selinux.selinux_homedir_context_path - selinux_media_context_path = _selinux.selinux_media_context_path - selinux_contexts_path = _selinux.selinux_contexts_path -+selinux_securetty_types_path = _selinux.selinux_securetty_types_path - selinux_booleans_path = _selinux.selinux_booleans_path - selinux_customizable_types_path = _selinux.selinux_customizable_types_path - selinux_users_path = _selinux.selinux_users_path -@@ -109,13 +123,16 @@ - selinux_translations_path = _selinux.selinux_translations_path - selinux_netfilter_context_path = _selinux.selinux_netfilter_context_path - selinux_path = _selinux.selinux_path --selinux_check_passwd_access = _selinux.selinux_check_passwd_access --checkPasswdAccess = _selinux.checkPasswdAccess -+selinux_check_securetty_context = _selinux.selinux_check_securetty_context -+set_selinuxmnt = _selinux.set_selinuxmnt - rpm_execcon = _selinux.rpm_execcon - is_context_customizable = _selinux.is_context_customizable - selinux_trans_to_raw_context = _selinux.selinux_trans_to_raw_context - selinux_raw_to_trans_context = _selinux.selinux_raw_to_trans_context - selinux_getpolicytype = _selinux.selinux_getpolicytype - getseuserbyname = _selinux.getseuserbyname -+selinux_file_context_cmp = _selinux.selinux_file_context_cmp -+selinux_file_context_verify = _selinux.selinux_file_context_verify -+selinux_lsetfilecon_default = _selinux.selinux_lsetfilecon_default - - -diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig.i libselinux-2.0.13/src/selinuxswig.i ---- nsalibselinux/src/selinuxswig.i 2007-04-12 16:02:48.000000000 -0400 -+++ libselinux-2.0.13/src/selinuxswig.i 2007-04-23 10:26:21.000000000 -0400 -@@ -21,6 +21,7 @@ - %module selinux - %{ - #include "selinux/selinux.h" -+ #include "selinux/get_context_list.h" - %} - %apply int *OUTPUT { int * }; - %apply int *OUTPUT { size_t * }; -@@ -42,8 +43,12 @@ - - %typedef unsigned mode_t; - -+%include "../include/selinux/get_context_list.h" -+ - extern int is_selinux_enabled(void); - extern int is_selinux_mls_enabled(void); -+extern void freecon(security_context_t con); -+extern void freeconary(security_context_t * con); - extern int getcon(security_context_t *con); - extern int setcon(security_context_t con); - extern int getpidcon(int pid, security_context_t *con); -@@ -90,6 +95,11 @@ - mode_t mode, - security_context_t *con); - -+extern int matchpathcon_init_prefix(const char *path, -+ const char *prefix); -+extern void matchpathcon_fini(void); -+ -+ - extern int matchmediacon(const char *media, - security_context_t *con); - -@@ -106,6 +116,7 @@ - extern const char *selinux_homedir_context_path(void); - extern const char *selinux_media_context_path(void); - extern const char *selinux_contexts_path(void); -+extern const char *selinux_securetty_types_path(void); - extern const char *selinux_booleans_path(void); - extern const char *selinux_customizable_types_path(void); - extern const char *selinux_users_path(void); -@@ -113,11 +124,15 @@ - extern const char *selinux_translations_path(void); - extern const char *selinux_netfilter_context_path(void); - extern const char *selinux_path(void); --extern int selinux_check_passwd_access(access_vector_t requested); --extern int checkPasswdAccess(access_vector_t requested); -+#extern int selinux_check_passwd_access(access_vector_t requested); -+#extern int checkPasswdAccess(access_vector_t requested); - -+extern int selinux_check_securetty_context(security_context_t tty_context); -+void set_selinuxmnt(char *mnt); -+ -+#ifdef SWIGpython - // This tells SWIG to treat char ** as a special case --%typemap(python,in) char ** { -+%typemap(in) char ** { - /* Check if is a list */ - if (PyList_Check($input)) { - int size = PyList_Size($input); -@@ -143,6 +158,7 @@ - return NULL; - } - } -+#endif - - extern int rpm_execcon(unsigned int verified, - const char *filename, -@@ -164,3 +180,7 @@ - } - extern int selinux_getpolicytype(char **enforce); - extern int getseuserbyname(const char *linuxuser, char **seuser, char **level); -+ -+int selinux_file_context_cmp(const security_context_t a, const security_context_t b); -+int selinux_file_context_verify(const char *path, mode_t mode); -+int selinux_lsetfilecon_default(const char *path); -diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libselinux-2.0.13/src/selinuxswig_wrap.c ---- nsalibselinux/src/selinuxswig_wrap.c 2007-04-12 16:02:48.000000000 -0400 -+++ libselinux-2.0.13/src/selinuxswig_wrap.c 2007-04-23 10:26:41.000000000 -0400 -@@ -2449,11 +2449,11 @@ - /* -------- TYPES TABLE (BEGIN) -------- */ - - #define SWIGTYPE_p_SELboolean swig_types[0] --#define SWIGTYPE_p_access_vector_t swig_types[1] --#define SWIGTYPE_p_char swig_types[2] --#define SWIGTYPE_p_int swig_types[3] --#define SWIGTYPE_p_p_char swig_types[4] --#define SWIGTYPE_p_p_p_char swig_types[5] -+#define SWIGTYPE_p_char swig_types[1] -+#define SWIGTYPE_p_int swig_types[2] -+#define SWIGTYPE_p_p_char swig_types[3] -+#define SWIGTYPE_p_p_p_char swig_types[4] -+#define SWIGTYPE_p_p_security_context_t swig_types[5] - #define SWIGTYPE_p_security_context_t swig_types[6] - #define SWIGTYPE_p_unsigned_int swig_types[7] - static swig_type_info *swig_types[9]; -@@ -2485,6 +2485,99 @@ - - - #include "selinux/selinux.h" -+ #include "selinux/get_context_list.h" -+ -+ -+SWIGINTERN swig_type_info* -+SWIG_pchar_descriptor(void) -+{ -+ static int init = 0; -+ static swig_type_info* info = 0; -+ if (!init) { -+ info = SWIG_TypeQuery("_p_char"); -+ init = 1; -+ } -+ return info; -+} -+ -+ -+SWIGINTERNINLINE PyObject * -+SWIG_FromCharPtrAndSize(const char* carray, size_t size) -+{ -+ if (carray) { -+ if (size > INT_MAX) { -+ swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); -+ return pchar_descriptor ? -+ SWIG_NewPointerObj((char *)(carray), pchar_descriptor, 0) : SWIG_Py_Void(); -+ } else { -+ return PyString_FromStringAndSize(carray, (int)(size)); -+ } -+ } else { -+ return SWIG_Py_Void(); -+ } -+} -+ -+ -+SWIGINTERNINLINE PyObject * -+SWIG_FromCharPtr(const char *cptr) -+{ -+ return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0)); -+} -+ -+ -+SWIGINTERN int -+SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc) -+{ -+ if (PyString_Check(obj)) { -+ char *cstr; Py_ssize_t len; -+ PyString_AsStringAndSize(obj, &cstr, &len); -+ if (cptr) { -+ if (alloc) { -+ /* -+ In python the user should not be able to modify the inner -+ string representation. To warranty that, if you define -+ SWIG_PYTHON_SAFE_CSTRINGS, a new/copy of the python string -+ buffer is always returned. -+ -+ The default behavior is just to return the pointer value, -+ so, be careful. -+ */ -+#if defined(SWIG_PYTHON_SAFE_CSTRINGS) -+ if (*alloc != SWIG_OLDOBJ) -+#else -+ if (*alloc == SWIG_NEWOBJ) -+#endif -+ { -+ *cptr = (char *)memcpy((char *)malloc((len + 1)*sizeof(char)), cstr, sizeof(char)*(len + 1)); -+ *alloc = SWIG_NEWOBJ; -+ } +diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig.i libselinux-2.0.15/src/selinuxswig.i +--- nsalibselinux/src/selinuxswig.i 2007-05-18 09:58:34.000000000 -0400 ++++ libselinux-2.0.15/src/selinuxswig.i 2007-05-15 15:07:02.000000000 -0400 +@@ -41,6 +40,36 @@ + $1 = (security_context_t)PyString_AsString($input); + } + ++%typemap(python,argout) security_context_t ** { ++ int i; ++ PyObject *security_context_string; ++ ++ PyObject *list_security_context = PyList_New(0); // Create the list. ++ if (list_security_context) { ++ security_context_t *p_security_context_t = *arg3; ++ for (i=0; i < result; i++) { ++ security_context_string = PyString_FromString(strdup((char *)p_security_context_t[i])); ++ if (PyList_Append(list_security_context, security_context_string) < 0) { ++ PyErr_SetString(PyExc_MemoryError,"typemap(argout) security_context_t **: Fail to insert item in list."); ++ Py_DECREF(list_security_context); ++ $result = SWIG_From_int(STATUS_ERR); ++ break; ++ } ++ } ++ freeconary(p_security_context_t); ++ } + else { -+ *cptr = cstr; -+ *alloc = SWIG_OLDOBJ; ++ PyErr_SetString(PyExc_MemoryError,"typemap(argout) security_context_t **: Fail to create list."); ++ $result = SWIG_From_int(STATUS_ERR); + } -+ } else { -+ *cptr = PyString_AsString(obj); -+ } -+ } -+ if (psize) *psize = len + 1; -+ return SWIG_OK; -+ } else { -+ swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); -+ if (pchar_descriptor) { -+ void* vptr = 0; -+ if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) { -+ if (cptr) *cptr = (char *) vptr; -+ if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0; -+ if (alloc) *alloc = SWIG_OLDOBJ; -+ return SWIG_OK; -+ } -+ } -+ } -+ return SWIG_TypeError; -+} -+ -+ -+ - - - #define SWIG_From_long PyInt_FromLong -@@ -2644,74 +2737,6 @@ - } - - --SWIGINTERN swig_type_info* --SWIG_pchar_descriptor(void) --{ -- static int init = 0; -- static swig_type_info* info = 0; -- if (!init) { -- info = SWIG_TypeQuery("_p_char"); -- init = 1; -- } -- return info; --} -- -- --SWIGINTERN int --SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc) --{ -- if (PyString_Check(obj)) { -- char *cstr; Py_ssize_t len; -- PyString_AsStringAndSize(obj, &cstr, &len); -- if (cptr) { -- if (alloc) { -- /* -- In python the user should not be able to modify the inner -- string representation. To warranty that, if you define -- SWIG_PYTHON_SAFE_CSTRINGS, a new/copy of the python string -- buffer is always returned. -- -- The default behavior is just to return the pointer value, -- so, be careful. -- */ --#if defined(SWIG_PYTHON_SAFE_CSTRINGS) -- if (*alloc != SWIG_OLDOBJ) --#else -- if (*alloc == SWIG_NEWOBJ) --#endif -- { -- *cptr = (char *)memcpy((char *)malloc((len + 1)*sizeof(char)), cstr, sizeof(char)*(len + 1)); -- *alloc = SWIG_NEWOBJ; -- } -- else { -- *cptr = cstr; -- *alloc = SWIG_OLDOBJ; -- } -- } else { -- *cptr = PyString_AsString(obj); -- } -- } -- if (psize) *psize = len + 1; -- return SWIG_OK; -- } else { -- swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); -- if (pchar_descriptor) { -- void* vptr = 0; -- if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) { -- if (cptr) *cptr = (char *) vptr; -- if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0; -- if (alloc) *alloc = SWIG_OLDOBJ; -- return SWIG_OK; -- } -- } -- } -- return SWIG_TypeError; --} -- -- -- -- -- - SWIGINTERN int - SWIG_AsVal_unsigned_SS_long (PyObject *obj, unsigned long *val) - { -@@ -2781,33 +2806,396 @@ - return res; - } - -+#ifdef __cplusplus -+extern "C" { -+#endif -+SWIGINTERN PyObject *_wrap_get_ordered_context_list(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+ PyObject *resultobj = 0; -+ char *arg1 = (char *) 0 ; -+ security_context_t arg2 ; -+ security_context_t **arg3 = (security_context_t **) 0 ; -+ int result; -+ int res1 ; -+ char *buf1 = 0 ; -+ int alloc1 = 0 ; -+ void *argp3 = 0 ; -+ int res3 = 0 ; -+ PyObject * obj0 = 0 ; -+ PyObject * obj1 = 0 ; -+ PyObject * obj2 = 0 ; -+ -+ if (!PyArg_ParseTuple(args,(char *)"OOO:get_ordered_context_list",&obj0,&obj1,&obj2)) SWIG_fail; -+ res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); -+ if (!SWIG_IsOK(res1)) { -+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "get_ordered_context_list" "', argument " "1"" of type '" "char const *""'"); -+ } -+ arg1 = (char *)(buf1); -+ { -+ arg2 = (security_context_t)PyString_AsString(obj1); -+ } -+ res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_p_security_context_t, 0 | 0 ); -+ if (!SWIG_IsOK(res3)) { -+ SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "get_ordered_context_list" "', argument " "3"" of type '" "security_context_t **""'"); -+ } -+ arg3 = (security_context_t **)(argp3); -+ result = (int)get_ordered_context_list((char const *)arg1,arg2,arg3); -+ resultobj = SWIG_From_int((int)(result)); -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ return resultobj; -+fail: -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ return NULL; -+} -+ -+ -+SWIGINTERN PyObject *_wrap_get_ordered_context_list_with_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+ PyObject *resultobj = 0; -+ char *arg1 = (char *) 0 ; -+ char *arg2 = (char *) 0 ; -+ security_context_t arg3 ; -+ security_context_t **arg4 = (security_context_t **) 0 ; -+ int result; -+ int res1 ; -+ char *buf1 = 0 ; -+ int alloc1 = 0 ; -+ int res2 ; -+ char *buf2 = 0 ; -+ int alloc2 = 0 ; -+ void *argp4 = 0 ; -+ int res4 = 0 ; -+ PyObject * obj0 = 0 ; -+ PyObject * obj1 = 0 ; -+ PyObject * obj2 = 0 ; -+ PyObject * obj3 = 0 ; -+ -+ if (!PyArg_ParseTuple(args,(char *)"OOOO:get_ordered_context_list_with_level",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; -+ res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); -+ if (!SWIG_IsOK(res1)) { -+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "get_ordered_context_list_with_level" "', argument " "1"" of type '" "char const *""'"); -+ } -+ arg1 = (char *)(buf1); -+ res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); -+ if (!SWIG_IsOK(res2)) { -+ SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "get_ordered_context_list_with_level" "', argument " "2"" of type '" "char const *""'"); -+ } -+ arg2 = (char *)(buf2); -+ { -+ arg3 = (security_context_t)PyString_AsString(obj2); -+ } -+ res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_p_security_context_t, 0 | 0 ); -+ if (!SWIG_IsOK(res4)) { -+ SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "get_ordered_context_list_with_level" "', argument " "4"" of type '" "security_context_t **""'"); -+ } -+ arg4 = (security_context_t **)(argp4); -+ result = (int)get_ordered_context_list_with_level((char const *)arg1,(char const *)arg2,arg3,arg4); -+ resultobj = SWIG_From_int((int)(result)); -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); -+ return resultobj; -+fail: -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); -+ return NULL; -+} -+ -+ -+SWIGINTERN PyObject *_wrap_get_default_context(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+ PyObject *resultobj = 0; -+ char *arg1 = (char *) 0 ; -+ security_context_t arg2 ; -+ security_context_t *arg3 = (security_context_t *) 0 ; -+ int result; -+ int res1 ; -+ char *buf1 = 0 ; -+ int alloc1 = 0 ; -+ security_context_t temp3 = NULL ; -+ char *temp30 = NULL ; -+ PyObject * obj0 = 0 ; -+ PyObject * obj1 = 0 ; -+ -+ { -+ arg3 = &temp3; -+ } -+ if (!PyArg_ParseTuple(args,(char *)"OO:get_default_context",&obj0,&obj1)) SWIG_fail; -+ res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); -+ if (!SWIG_IsOK(res1)) { -+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "get_default_context" "', argument " "1"" of type '" "char const *""'"); -+ } -+ arg1 = (char *)(buf1); -+ { -+ arg2 = (security_context_t)PyString_AsString(obj1); -+ } -+ result = (int)get_default_context((char const *)arg1,arg2,arg3); -+ resultobj = SWIG_From_int((int)(result)); -+ { -+ if (*arg3) -+ temp30 = *arg3; -+ else -+ temp30 = ""; -+ resultobj = SWIG_Python_AppendOutput(resultobj, PyString_FromString(temp30)); -+ } -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ return resultobj; -+fail: -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ return NULL; -+} -+ -+ -+SWIGINTERN PyObject *_wrap_get_default_context_with_level(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+ PyObject *resultobj = 0; -+ char *arg1 = (char *) 0 ; -+ char *arg2 = (char *) 0 ; -+ security_context_t arg3 ; -+ security_context_t *arg4 = (security_context_t *) 0 ; -+ int result; -+ int res1 ; -+ char *buf1 = 0 ; -+ int alloc1 = 0 ; -+ int res2 ; -+ char *buf2 = 0 ; -+ int alloc2 = 0 ; -+ security_context_t temp4 = NULL ; -+ char *temp40 = NULL ; -+ PyObject * obj0 = 0 ; -+ PyObject * obj1 = 0 ; -+ PyObject * obj2 = 0 ; -+ -+ { -+ arg4 = &temp4; -+ } -+ if (!PyArg_ParseTuple(args,(char *)"OOO:get_default_context_with_level",&obj0,&obj1,&obj2)) SWIG_fail; -+ res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); -+ if (!SWIG_IsOK(res1)) { -+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "get_default_context_with_level" "', argument " "1"" of type '" "char const *""'"); -+ } -+ arg1 = (char *)(buf1); -+ res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); -+ if (!SWIG_IsOK(res2)) { -+ SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "get_default_context_with_level" "', argument " "2"" of type '" "char const *""'"); -+ } -+ arg2 = (char *)(buf2); -+ { -+ arg3 = (security_context_t)PyString_AsString(obj2); -+ } -+ result = (int)get_default_context_with_level((char const *)arg1,(char const *)arg2,arg3,arg4); -+ resultobj = SWIG_From_int((int)(result)); -+ { -+ if (*arg4) -+ temp40 = *arg4; -+ else -+ temp40 = ""; -+ resultobj = SWIG_Python_AppendOutput(resultobj, PyString_FromString(temp40)); -+ } -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); -+ return resultobj; -+fail: -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); -+ return NULL; -+} -+ -+ -+SWIGINTERN PyObject *_wrap_get_default_context_with_role(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+ PyObject *resultobj = 0; -+ char *arg1 = (char *) 0 ; -+ char *arg2 = (char *) 0 ; -+ security_context_t arg3 ; -+ security_context_t *arg4 = (security_context_t *) 0 ; -+ int result; -+ int res1 ; -+ char *buf1 = 0 ; -+ int alloc1 = 0 ; -+ int res2 ; -+ char *buf2 = 0 ; -+ int alloc2 = 0 ; -+ security_context_t temp4 = NULL ; -+ char *temp40 = NULL ; -+ PyObject * obj0 = 0 ; -+ PyObject * obj1 = 0 ; -+ PyObject * obj2 = 0 ; -+ -+ { -+ arg4 = &temp4; -+ } -+ if (!PyArg_ParseTuple(args,(char *)"OOO:get_default_context_with_role",&obj0,&obj1,&obj2)) SWIG_fail; -+ res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); -+ if (!SWIG_IsOK(res1)) { -+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "get_default_context_with_role" "', argument " "1"" of type '" "char const *""'"); -+ } -+ arg1 = (char *)(buf1); -+ res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); -+ if (!SWIG_IsOK(res2)) { -+ SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "get_default_context_with_role" "', argument " "2"" of type '" "char const *""'"); -+ } -+ arg2 = (char *)(buf2); -+ { -+ arg3 = (security_context_t)PyString_AsString(obj2); -+ } -+ result = (int)get_default_context_with_role((char const *)arg1,(char const *)arg2,arg3,arg4); -+ resultobj = SWIG_From_int((int)(result)); -+ { -+ if (*arg4) -+ temp40 = *arg4; -+ else -+ temp40 = ""; -+ resultobj = SWIG_Python_AppendOutput(resultobj, PyString_FromString(temp40)); -+ } -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); -+ return resultobj; -+fail: -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); -+ return NULL; -+} -+ -+ -+SWIGINTERN PyObject *_wrap_get_default_context_with_rolelevel(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+ PyObject *resultobj = 0; -+ char *arg1 = (char *) 0 ; -+ char *arg2 = (char *) 0 ; -+ char *arg3 = (char *) 0 ; -+ security_context_t arg4 ; -+ security_context_t *arg5 = (security_context_t *) 0 ; -+ int result; -+ int res1 ; -+ char *buf1 = 0 ; -+ int alloc1 = 0 ; -+ int res2 ; -+ char *buf2 = 0 ; -+ int alloc2 = 0 ; -+ int res3 ; -+ char *buf3 = 0 ; -+ int alloc3 = 0 ; -+ security_context_t temp5 = NULL ; -+ char *temp50 = NULL ; -+ PyObject * obj0 = 0 ; -+ PyObject * obj1 = 0 ; -+ PyObject * obj2 = 0 ; -+ PyObject * obj3 = 0 ; -+ -+ { -+ arg5 = &temp5; -+ } -+ if (!PyArg_ParseTuple(args,(char *)"OOOO:get_default_context_with_rolelevel",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; -+ res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); -+ if (!SWIG_IsOK(res1)) { -+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "get_default_context_with_rolelevel" "', argument " "1"" of type '" "char const *""'"); -+ } -+ arg1 = (char *)(buf1); -+ res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); -+ if (!SWIG_IsOK(res2)) { -+ SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "get_default_context_with_rolelevel" "', argument " "2"" of type '" "char const *""'"); -+ } -+ arg2 = (char *)(buf2); -+ res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); -+ if (!SWIG_IsOK(res3)) { -+ SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "get_default_context_with_rolelevel" "', argument " "3"" of type '" "char const *""'"); -+ } -+ arg3 = (char *)(buf3); -+ { -+ arg4 = (security_context_t)PyString_AsString(obj3); -+ } -+ result = (int)get_default_context_with_rolelevel((char const *)arg1,(char const *)arg2,(char const *)arg3,arg4,arg5); -+ resultobj = SWIG_From_int((int)(result)); -+ { -+ if (*arg5) -+ temp50 = *arg5; -+ else -+ temp50 = ""; -+ resultobj = SWIG_Python_AppendOutput(resultobj, PyString_FromString(temp50)); -+ } -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); -+ if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); -+ return resultobj; -+fail: -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); -+ if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); -+ return NULL; -+} + -+ -+SWIGINTERN PyObject *_wrap_query_user_context(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+ PyObject *resultobj = 0; -+ security_context_t *arg1 = (security_context_t *) 0 ; -+ security_context_t *arg2 = (security_context_t *) 0 ; -+ int result; -+ security_context_t temp1 = NULL ; -+ security_context_t temp2 = NULL ; -+ char *temp10 = NULL ; -+ char *temp20 = NULL ; -+ -+ { -+ arg1 = &temp1; -+ } -+ { -+ arg2 = &temp2; -+ } -+ if (!PyArg_ParseTuple(args,(char *)":query_user_context")) SWIG_fail; -+ result = (int)query_user_context(arg1,arg2); -+ resultobj = SWIG_From_int((int)(result)); -+ { -+ if (*arg1) -+ temp10 = *arg1; -+ else -+ temp10 = ""; -+ resultobj = SWIG_Python_AppendOutput(resultobj, PyString_FromString(temp10)); -+ } -+ { -+ if (*arg2) -+ temp20 = *arg2; -+ else -+ temp20 = ""; -+ resultobj = SWIG_Python_AppendOutput(resultobj, PyString_FromString(temp20)); -+ } -+ return resultobj; -+fail: -+ return NULL; ++ %append_output(list_security_context); +} + - --SWIGINTERNINLINE PyObject * --SWIG_FromCharPtrAndSize(const char* carray, size_t size) --{ -- if (carray) { -- if (size > INT_MAX) { -- swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); -- return pchar_descriptor ? -- SWIG_NewPointerObj((char *)(carray), pchar_descriptor, 0) : SWIG_Py_Void(); -- } else { -- return PyString_FromStringAndSize(carray, (int)(size)); -- } -- } else { -- return SWIG_Py_Void(); -+SWIGINTERN PyObject *_wrap_manual_user_enter_context(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+ PyObject *resultobj = 0; -+ char *arg1 = (char *) 0 ; -+ security_context_t *arg2 = (security_context_t *) 0 ; -+ int result; -+ int res1 ; -+ char *buf1 = 0 ; -+ int alloc1 = 0 ; -+ security_context_t temp2 = NULL ; -+ char *temp20 = NULL ; -+ PyObject * obj0 = 0 ; -+ -+ { -+ arg2 = &temp2; -+ } -+ if (!PyArg_ParseTuple(args,(char *)"O:manual_user_enter_context",&obj0)) SWIG_fail; -+ res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); -+ if (!SWIG_IsOK(res1)) { -+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "manual_user_enter_context" "', argument " "1"" of type '" "char const *""'"); -+ } -+ arg1 = (char *)(buf1); -+ result = (int)manual_user_enter_context((char const *)arg1,arg2); -+ resultobj = SWIG_From_int((int)(result)); -+ { -+ if (*arg2) -+ temp20 = *arg2; -+ else -+ temp20 = ""; -+ resultobj = SWIG_Python_AppendOutput(resultobj, PyString_FromString(temp20)); - } -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ return resultobj; -+fail: -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ return NULL; - } - - --SWIGINTERNINLINE PyObject * --SWIG_FromCharPtr(const char *cptr) --{ -- return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0)); --} -- --#ifdef __cplusplus --extern "C" { --#endif - SWIGINTERN PyObject *_wrap_is_selinux_enabled(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - int result; -@@ -2834,6 +3222,48 @@ - } - - -+SWIGINTERN PyObject *_wrap_freecon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+ PyObject *resultobj = 0; -+ security_context_t arg1 ; -+ PyObject * obj0 = 0 ; -+ -+ if (!PyArg_ParseTuple(args,(char *)"O:freecon",&obj0)) SWIG_fail; -+ { -+ arg1 = (security_context_t)PyString_AsString(obj0); -+ } -+ freecon(arg1); -+ resultobj = SWIG_Py_Void(); -+ return resultobj; -+fail: -+ return NULL; -+} -+ -+ -+SWIGINTERN PyObject *_wrap_freeconary(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+ PyObject *resultobj = 0; -+ security_context_t *arg1 = (security_context_t *) 0 ; -+ security_context_t temp1 = NULL ; -+ char *temp10 = NULL ; -+ -+ { -+ arg1 = &temp1; -+ } -+ if (!PyArg_ParseTuple(args,(char *)":freeconary")) SWIG_fail; -+ freeconary(arg1); -+ resultobj = SWIG_Py_Void(); -+ { -+ if (*arg1) -+ temp10 = *arg1; -+ else -+ temp10 = ""; -+ resultobj = SWIG_Python_AppendOutput(resultobj, PyString_FromString(temp10)); -+ } -+ return resultobj; -+fail: -+ return NULL; ++%typemap(in, numinputs=0) security_context_t **(security_context_t *temp=NULL) { ++ $1 = &temp; +} + -+ - SWIGINTERN PyObject *_wrap_getcon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - security_context_t *arg1 = (security_context_t *) 0 ; -@@ -3777,6 +4207,55 @@ - } - - -+SWIGINTERN PyObject *_wrap_matchpathcon_init_prefix(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+ PyObject *resultobj = 0; -+ char *arg1 = (char *) 0 ; -+ char *arg2 = (char *) 0 ; -+ int result; -+ int res1 ; -+ char *buf1 = 0 ; -+ int alloc1 = 0 ; -+ int res2 ; -+ char *buf2 = 0 ; -+ int alloc2 = 0 ; -+ PyObject * obj0 = 0 ; -+ PyObject * obj1 = 0 ; -+ -+ if (!PyArg_ParseTuple(args,(char *)"OO:matchpathcon_init_prefix",&obj0,&obj1)) SWIG_fail; -+ res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); -+ if (!SWIG_IsOK(res1)) { -+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "matchpathcon_init_prefix" "', argument " "1"" of type '" "char const *""'"); -+ } -+ arg1 = (char *)(buf1); -+ res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); -+ if (!SWIG_IsOK(res2)) { -+ SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "matchpathcon_init_prefix" "', argument " "2"" of type '" "char const *""'"); -+ } -+ arg2 = (char *)(buf2); -+ result = (int)matchpathcon_init_prefix((char const *)arg1,(char const *)arg2); -+ resultobj = SWIG_From_int((int)(result)); -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); -+ return resultobj; -+fail: -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); -+ return NULL; -+} -+ -+ -+SWIGINTERN PyObject *_wrap_matchpathcon_fini(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+ PyObject *resultobj = 0; -+ -+ if (!PyArg_ParseTuple(args,(char *)":matchpathcon_fini")) SWIG_fail; -+ matchpathcon_fini(); -+ resultobj = SWIG_Py_Void(); -+ return resultobj; -+fail: -+ return NULL; -+} -+ -+ - SWIGINTERN PyObject *_wrap_matchmediacon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - char *arg1 = (char *) 0 ; -@@ -3994,6 +4473,19 @@ - } - - -+SWIGINTERN PyObject *_wrap_selinux_securetty_types_path(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+ PyObject *resultobj = 0; -+ char *result = 0 ; -+ -+ if (!PyArg_ParseTuple(args,(char *)":selinux_securetty_types_path")) SWIG_fail; -+ result = (char *)selinux_securetty_types_path(); -+ resultobj = SWIG_FromCharPtr((const char *)result); -+ return resultobj; -+fail: -+ return NULL; -+} -+ -+ - SWIGINTERN PyObject *_wrap_selinux_booleans_path(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; - char *result = 0 ; -@@ -4085,27 +4577,17 @@ - } - - --SWIGINTERN PyObject *_wrap_selinux_check_passwd_access(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+SWIGINTERN PyObject *_wrap_selinux_check_securetty_context(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; -- access_vector_t arg1 ; -+ security_context_t arg1 ; - int result; -- void *argp1 ; -- int res1 = 0 ; - PyObject * obj0 = 0 ; - -- if (!PyArg_ParseTuple(args,(char *)"O:selinux_check_passwd_access",&obj0)) SWIG_fail; -+ if (!PyArg_ParseTuple(args,(char *)"O:selinux_check_securetty_context",&obj0)) SWIG_fail; - { -- res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_access_vector_t, 0 ); -- if (!SWIG_IsOK(res1)) { -- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "selinux_check_passwd_access" "', argument " "1"" of type '" "access_vector_t""'"); -- } -- if (!argp1) { -- SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "selinux_check_passwd_access" "', argument " "1"" of type '" "access_vector_t""'"); -- } else { -- arg1 = *((access_vector_t *)(argp1)); -- } -+ arg1 = (security_context_t)PyString_AsString(obj0); - } -- result = (int)selinux_check_passwd_access(arg1); -+ result = (int)selinux_check_securetty_context(arg1); - resultobj = SWIG_From_int((int)(result)); - return resultobj; - fail: -@@ -4113,30 +4595,26 @@ - } - - --SWIGINTERN PyObject *_wrap_checkPasswdAccess(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+SWIGINTERN PyObject *_wrap_set_selinuxmnt(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *resultobj = 0; -- access_vector_t arg1 ; -- int result; -- void *argp1 ; -- int res1 = 0 ; -+ char *arg1 = (char *) 0 ; -+ int res1 ; -+ char *buf1 = 0 ; -+ int alloc1 = 0 ; - PyObject * obj0 = 0 ; - -- if (!PyArg_ParseTuple(args,(char *)"O:checkPasswdAccess",&obj0)) SWIG_fail; -- { -- res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_access_vector_t, 0 ); -- if (!SWIG_IsOK(res1)) { -- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "checkPasswdAccess" "', argument " "1"" of type '" "access_vector_t""'"); -- } -- if (!argp1) { -- SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "checkPasswdAccess" "', argument " "1"" of type '" "access_vector_t""'"); -- } else { -- arg1 = *((access_vector_t *)(argp1)); -- } -+ if (!PyArg_ParseTuple(args,(char *)"O:set_selinuxmnt",&obj0)) SWIG_fail; -+ res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); -+ if (!SWIG_IsOK(res1)) { -+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "set_selinuxmnt" "', argument " "1"" of type '" "char *""'"); - } -- result = (int)checkPasswdAccess(arg1); -- resultobj = SWIG_From_int((int)(result)); -+ arg1 = (char *)(buf1); -+ set_selinuxmnt(arg1); -+ resultobj = SWIG_Py_Void(); -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); - return resultobj; - fail: -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); - return NULL; - } - -@@ -4153,6 +4631,10 @@ - int res2 ; - char *buf2 = 0 ; - int alloc2 = 0 ; -+ void *argp3 = 0 ; -+ int res3 = 0 ; -+ void *argp4 = 0 ; -+ int res4 = 0 ; - PyObject * obj0 = 0 ; - PyObject * obj1 = 0 ; - PyObject * obj2 = 0 ; -@@ -4169,58 +4651,16 @@ - SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "rpm_execcon" "', argument " "2"" of type '" "char const *""'"); - } - arg2 = (char *)(buf2); -- { -- /* Check if is a list */ -- if (PyList_Check(obj2)) { -- int size = PyList_Size(obj2); -- int i = 0; -- arg3 = (char **) malloc((size+1)*sizeof(char *)); -- if (arg3 == NULL) { -- PyErr_SetString(PyExc_MemoryError,"Out of memory"); -- return NULL; -- } -- for (i = 0; i < size; i++) { -- PyObject *o = PyList_GetItem(obj2,i); -- if (PyString_Check(o)) -- arg3[i] = PyString_AsString(PyList_GetItem(obj2,i)); -- else { -- PyErr_SetString(PyExc_TypeError,"list must contain strings"); -- free(arg3); -- return NULL; -- } -- } -- arg3[i] = 0; -- } else { -- PyErr_SetString(PyExc_TypeError,"not a list"); -- return NULL; -- } -- } -- { -- /* Check if is a list */ -- if (PyList_Check(obj3)) { -- int size = PyList_Size(obj3); -- int i = 0; -- arg4 = (char **) malloc((size+1)*sizeof(char *)); -- if (arg4 == NULL) { -- PyErr_SetString(PyExc_MemoryError,"Out of memory"); -- return NULL; -- } -- for (i = 0; i < size; i++) { -- PyObject *o = PyList_GetItem(obj3,i); -- if (PyString_Check(o)) -- arg4[i] = PyString_AsString(PyList_GetItem(obj3,i)); -- else { -- PyErr_SetString(PyExc_TypeError,"list must contain strings"); -- free(arg4); -- return NULL; -- } -- } -- arg4[i] = 0; -- } else { -- PyErr_SetString(PyExc_TypeError,"not a list"); -- return NULL; -- } -+ res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_p_char, 0 | 0 ); -+ if (!SWIG_IsOK(res3)) { -+ SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "rpm_execcon" "', argument " "3"" of type '" "char **""'"); -+ } -+ arg3 = (char **)(argp3); -+ res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_p_char, 0 | 0 ); -+ if (!SWIG_IsOK(res4)) { -+ SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "rpm_execcon" "', argument " "4"" of type '" "char **""'"); - } -+ arg4 = (char **)(argp4); - result = (int)rpm_execcon(arg1,(char const *)arg2,arg3,arg4); - resultobj = SWIG_From_int((int)(result)); - if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); -@@ -4387,9 +4827,101 @@ - } - - -+SWIGINTERN PyObject *_wrap_selinux_file_context_cmp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+ PyObject *resultobj = 0; -+ security_context_t arg1 ; -+ security_context_t arg2 ; -+ int result; -+ PyObject * obj0 = 0 ; -+ PyObject * obj1 = 0 ; -+ -+ if (!PyArg_ParseTuple(args,(char *)"OO:selinux_file_context_cmp",&obj0,&obj1)) SWIG_fail; -+ { -+ arg1 = (security_context_t)PyString_AsString(obj0); -+ } -+ { -+ arg2 = (security_context_t)PyString_AsString(obj1); -+ } -+ result = (int)selinux_file_context_cmp(arg1,arg2); -+ resultobj = SWIG_From_int((int)(result)); -+ return resultobj; -+fail: -+ return NULL; -+} -+ -+ -+SWIGINTERN PyObject *_wrap_selinux_file_context_verify(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+ PyObject *resultobj = 0; -+ char *arg1 = (char *) 0 ; -+ mode_t arg2 ; -+ int result; -+ int res1 ; -+ char *buf1 = 0 ; -+ int alloc1 = 0 ; -+ unsigned int val2 ; -+ int ecode2 = 0 ; -+ PyObject * obj0 = 0 ; -+ PyObject * obj1 = 0 ; -+ -+ if (!PyArg_ParseTuple(args,(char *)"OO:selinux_file_context_verify",&obj0,&obj1)) SWIG_fail; -+ res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); -+ if (!SWIG_IsOK(res1)) { -+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "selinux_file_context_verify" "', argument " "1"" of type '" "char const *""'"); -+ } -+ arg1 = (char *)(buf1); -+ ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); -+ if (!SWIG_IsOK(ecode2)) { -+ SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "selinux_file_context_verify" "', argument " "2"" of type '" "mode_t""'"); -+ } -+ arg2 = (mode_t)(val2); -+ result = (int)selinux_file_context_verify((char const *)arg1,arg2); -+ resultobj = SWIG_From_int((int)(result)); -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ return resultobj; -+fail: -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ return NULL; -+} -+ -+ -+SWIGINTERN PyObject *_wrap_selinux_lsetfilecon_default(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -+ PyObject *resultobj = 0; -+ char *arg1 = (char *) 0 ; -+ int result; -+ int res1 ; -+ char *buf1 = 0 ; -+ int alloc1 = 0 ; -+ PyObject * obj0 = 0 ; -+ -+ if (!PyArg_ParseTuple(args,(char *)"O:selinux_lsetfilecon_default",&obj0)) SWIG_fail; -+ res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); -+ if (!SWIG_IsOK(res1)) { -+ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "selinux_lsetfilecon_default" "', argument " "1"" of type '" "char const *""'"); -+ } -+ arg1 = (char *)(buf1); -+ result = (int)selinux_lsetfilecon_default((char const *)arg1); -+ resultobj = SWIG_From_int((int)(result)); -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ return resultobj; -+fail: -+ if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); -+ return NULL; -+} -+ -+ - static PyMethodDef SwigMethods[] = { -+ { (char *)"get_ordered_context_list", _wrap_get_ordered_context_list, METH_VARARGS, NULL}, -+ { (char *)"get_ordered_context_list_with_level", _wrap_get_ordered_context_list_with_level, METH_VARARGS, NULL}, -+ { (char *)"get_default_context", _wrap_get_default_context, METH_VARARGS, NULL}, -+ { (char *)"get_default_context_with_level", _wrap_get_default_context_with_level, METH_VARARGS, NULL}, -+ { (char *)"get_default_context_with_role", _wrap_get_default_context_with_role, METH_VARARGS, NULL}, -+ { (char *)"get_default_context_with_rolelevel", _wrap_get_default_context_with_rolelevel, METH_VARARGS, NULL}, -+ { (char *)"query_user_context", _wrap_query_user_context, METH_VARARGS, NULL}, -+ { (char *)"manual_user_enter_context", _wrap_manual_user_enter_context, METH_VARARGS, NULL}, - { (char *)"is_selinux_enabled", _wrap_is_selinux_enabled, METH_VARARGS, NULL}, - { (char *)"is_selinux_mls_enabled", _wrap_is_selinux_mls_enabled, METH_VARARGS, NULL}, -+ { (char *)"freecon", _wrap_freecon, METH_VARARGS, NULL}, -+ { (char *)"freeconary", _wrap_freeconary, METH_VARARGS, NULL}, - { (char *)"getcon", _wrap_getcon, METH_VARARGS, NULL}, - { (char *)"setcon", _wrap_setcon, METH_VARARGS, NULL}, - { (char *)"getpidcon", _wrap_getpidcon, METH_VARARGS, NULL}, -@@ -4426,6 +4958,8 @@ - { (char *)"set_matchpathcon_flags", _wrap_set_matchpathcon_flags, METH_VARARGS, NULL}, - { (char *)"matchpathcon_init", _wrap_matchpathcon_init, METH_VARARGS, NULL}, - { (char *)"matchpathcon", _wrap_matchpathcon, METH_VARARGS, NULL}, -+ { (char *)"matchpathcon_init_prefix", _wrap_matchpathcon_init_prefix, METH_VARARGS, NULL}, -+ { (char *)"matchpathcon_fini", _wrap_matchpathcon_fini, METH_VARARGS, NULL}, - { (char *)"matchmediacon", _wrap_matchmediacon, METH_VARARGS, NULL}, - { (char *)"selinux_getenforcemode", _wrap_selinux_getenforcemode, METH_VARARGS, NULL}, - { (char *)"selinux_policy_root", _wrap_selinux_policy_root, METH_VARARGS, NULL}, -@@ -4440,6 +4974,7 @@ - { (char *)"selinux_homedir_context_path", _wrap_selinux_homedir_context_path, METH_VARARGS, NULL}, - { (char *)"selinux_media_context_path", _wrap_selinux_media_context_path, METH_VARARGS, NULL}, - { (char *)"selinux_contexts_path", _wrap_selinux_contexts_path, METH_VARARGS, NULL}, -+ { (char *)"selinux_securetty_types_path", _wrap_selinux_securetty_types_path, METH_VARARGS, NULL}, - { (char *)"selinux_booleans_path", _wrap_selinux_booleans_path, METH_VARARGS, NULL}, - { (char *)"selinux_customizable_types_path", _wrap_selinux_customizable_types_path, METH_VARARGS, NULL}, - { (char *)"selinux_users_path", _wrap_selinux_users_path, METH_VARARGS, NULL}, -@@ -4447,14 +4982,17 @@ - { (char *)"selinux_translations_path", _wrap_selinux_translations_path, METH_VARARGS, NULL}, - { (char *)"selinux_netfilter_context_path", _wrap_selinux_netfilter_context_path, METH_VARARGS, NULL}, - { (char *)"selinux_path", _wrap_selinux_path, METH_VARARGS, NULL}, -- { (char *)"selinux_check_passwd_access", _wrap_selinux_check_passwd_access, METH_VARARGS, NULL}, -- { (char *)"checkPasswdAccess", _wrap_checkPasswdAccess, METH_VARARGS, NULL}, -+ { (char *)"selinux_check_securetty_context", _wrap_selinux_check_securetty_context, METH_VARARGS, NULL}, -+ { (char *)"set_selinuxmnt", _wrap_set_selinuxmnt, METH_VARARGS, NULL}, - { (char *)"rpm_execcon", _wrap_rpm_execcon, METH_VARARGS, NULL}, - { (char *)"is_context_customizable", _wrap_is_context_customizable, METH_VARARGS, NULL}, - { (char *)"selinux_trans_to_raw_context", _wrap_selinux_trans_to_raw_context, METH_VARARGS, NULL}, - { (char *)"selinux_raw_to_trans_context", _wrap_selinux_raw_to_trans_context, METH_VARARGS, NULL}, - { (char *)"selinux_getpolicytype", _wrap_selinux_getpolicytype, METH_VARARGS, NULL}, - { (char *)"getseuserbyname", _wrap_getseuserbyname, METH_VARARGS, NULL}, -+ { (char *)"selinux_file_context_cmp", _wrap_selinux_file_context_cmp, METH_VARARGS, NULL}, -+ { (char *)"selinux_file_context_verify", _wrap_selinux_file_context_verify, METH_VARARGS, NULL}, -+ { (char *)"selinux_lsetfilecon_default", _wrap_selinux_lsetfilecon_default, METH_VARARGS, NULL}, - { NULL, NULL, 0, NULL } - }; - -@@ -4462,41 +5000,41 @@ - /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */ - - static swig_type_info _swigt__p_SELboolean = {"_p_SELboolean", "SELboolean *", 0, 0, (void*)0, 0}; --static swig_type_info _swigt__p_access_vector_t = {"_p_access_vector_t", "access_vector_t *", 0, 0, (void*)0, 0}; - static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; - static swig_type_info _swigt__p_int = {"_p_int", "int *", 0, 0, (void*)0, 0}; - static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **", 0, 0, (void*)0, 0}; - static swig_type_info _swigt__p_p_p_char = {"_p_p_p_char", "char ***", 0, 0, (void*)0, 0}; -+static swig_type_info _swigt__p_p_security_context_t = {"_p_p_security_context_t", "security_context_t **", 0, 0, (void*)0, 0}; - static swig_type_info _swigt__p_security_context_t = {"_p_security_context_t", "security_context_t *", 0, 0, (void*)0, 0}; - static swig_type_info _swigt__p_unsigned_int = {"_p_unsigned_int", "unsigned int *|mode_t *", 0, 0, (void*)0, 0}; - - static swig_type_info *swig_type_initial[] = { - &_swigt__p_SELboolean, -- &_swigt__p_access_vector_t, - &_swigt__p_char, - &_swigt__p_int, - &_swigt__p_p_char, - &_swigt__p_p_p_char, -+ &_swigt__p_p_security_context_t, - &_swigt__p_security_context_t, - &_swigt__p_unsigned_int, - }; - - static swig_cast_info _swigc__p_SELboolean[] = { {&_swigt__p_SELboolean, 0, 0, 0},{0, 0, 0, 0}}; --static swig_cast_info _swigc__p_access_vector_t[] = { {&_swigt__p_access_vector_t, 0, 0, 0},{0, 0, 0, 0}}; - static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}}; - static swig_cast_info _swigc__p_int[] = { {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}}; - static swig_cast_info _swigc__p_p_char[] = { {&_swigt__p_p_char, 0, 0, 0},{0, 0, 0, 0}}; - static swig_cast_info _swigc__p_p_p_char[] = { {&_swigt__p_p_p_char, 0, 0, 0},{0, 0, 0, 0}}; -+static swig_cast_info _swigc__p_p_security_context_t[] = { {&_swigt__p_p_security_context_t, 0, 0, 0},{0, 0, 0, 0}}; - static swig_cast_info _swigc__p_security_context_t[] = { {&_swigt__p_security_context_t, 0, 0, 0},{0, 0, 0, 0}}; - static swig_cast_info _swigc__p_unsigned_int[] = { {&_swigt__p_unsigned_int, 0, 0, 0},{0, 0, 0, 0}}; + %typedef unsigned mode_t; - static swig_cast_info *swig_cast_initial[] = { - _swigc__p_SELboolean, -- _swigc__p_access_vector_t, - _swigc__p_char, - _swigc__p_int, - _swigc__p_p_char, - _swigc__p_p_p_char, -+ _swigc__p_p_security_context_t, - _swigc__p_security_context_t, - _swigc__p_unsigned_int, - }; -@@ -5019,6 +5557,7 @@ - SWIG_InstallConstants(d,swig_const_table); - - -+ SWIG_Python_SetConstant(d, "SELINUX_DEFAULTUSER",SWIG_FromCharPtr("user_u")); - SWIG_Python_SetConstant(d, "MATCHPATHCON_BASEONLY",SWIG_From_int((int)(1))); - SWIG_Python_SetConstant(d, "MATCHPATHCON_NOTRANS",SWIG_From_int((int)(2))); - } + %include "../include/selinux/get_context_list.h" diff --git a/libselinux.spec b/libselinux.spec index 8824d31..8c26bbb 100644 --- a/libselinux.spec +++ b/libselinux.spec @@ -1,7 +1,7 @@ %define libsepolver 2.0.1-1 Summary: SELinux library and simple utilities Name: libselinux -Version: 2.0.14 +Version: 2.0.16 Release: 1%{?dist} License: Public domain (uncopyrighted) Group: System Environment/Libraries @@ -121,6 +121,11 @@ exit 0 %{_libdir}/python*/site-packages/selinux.py* %changelog +* Fri May 4 2007 Dan Walsh - 2.0.16-1 +- Upgrade to upstream + * Merged additional swig python bindings from Dan Walsh. + * Merged helpful message when selinuxfs mount fails patch from Dax Kelson. + * Tue Apr 24 2007 Dan Walsh - 2.0.14-1 - Upgrade to upstream * Merged build fix for avc_internal.c from Joshua Brindle. diff --git a/sources b/sources index d837c7e..b1b13e6 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -c7bcec2fc9766fd31a2468f08ac186ac libselinux-2.0.14.tgz +6dd946578c8fd9bafca0274c0d5bbbdd libselinux-2.0.16.tgz