diff --git a/libselinux-rhat.patch b/libselinux-rhat.patch index 79f1eaf..9e03e0f 100644 --- a/libselinux-rhat.patch +++ b/libselinux-rhat.patch @@ -1,8 +1,79 @@ -diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig.i libselinux-2.0.12/src/selinuxswig.i +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.12/src/selinuxswig.i 2007-04-12 12:39:51.000000000 -0400 -@@ -44,6 +44,8 @@ ++++ 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); @@ -10,7 +81,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig.i libselinux- 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 +92,11 @@ +@@ -90,6 +95,11 @@ mode_t mode, security_context_t *con); @@ -22,7 +93,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig.i libselinux- extern int matchmediacon(const char *media, security_context_t *con); -@@ -106,6 +113,7 @@ +@@ -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); @@ -30,7 +101,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig.i libselinux- extern const char *selinux_booleans_path(void); extern const char *selinux_customizable_types_path(void); extern const char *selinux_users_path(void); -@@ -113,8 +121,11 @@ +@@ -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); @@ -38,13 +109,26 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig.i libselinux- -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 ** { -@@ -164,3 +175,7 @@ +-%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); @@ -52,3 +136,1092 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig.i libselinux- +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; ++ } ++ 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; ++} ++ ++ ++ + + + #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; ++} ++ + +-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; ++} ++ ++ + 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}}; + + 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))); + } diff --git a/libselinux.spec b/libselinux.spec index 2ed830a..c106157 100644 --- a/libselinux.spec +++ b/libselinux.spec @@ -2,7 +2,7 @@ Summary: SELinux library and simple utilities Name: libselinux Version: 2.0.13 -Release: 1%{?dist} +Release: 2%{?dist} License: Public domain (uncopyrighted) Group: System Environment/Libraries Source: http://www.nsa.gov/selinux/archives/%{name}-%{version}.tgz @@ -121,6 +121,9 @@ exit 0 %{_libdir}/python*/site-packages/selinux.py* %changelog +* Mon Apr 23 2007 Dan Walsh - 2.0.13-2 +- Add get_context_list funcitions to swig file + * Thu Apr 12 2007 Dan Walsh - 2.0.13-1 - Upgrade to upstream * Merged rpm_execcon python binding fix, matchpathcon man page fix, and getsebool -a handling for EACCES from Dan Walsh.