From cd000f17c0d95c8d605b380fecafe59eac0ea36a Mon Sep 17 00:00:00 2001 From: Daniel J Walsh Date: Dec 12 2008 15:21:10 +0000 Subject: - Add new function getseuser which will take username and service and return - seuser and level. ipa will populate file in future. - Change selinuxdefcon to return just the context by default --- diff --git a/libselinux-rhat.patch b/libselinux-rhat.patch index 276f358..8c776f3 100644 --- a/libselinux-rhat.patch +++ b/libselinux-rhat.patch @@ -1,6 +1,24 @@ +diff --exclude-from=exclude -N -u -r nsalibselinux/include/selinux/selinux.h libselinux-2.0.76/include/selinux/selinux.h +--- nsalibselinux/include/selinux/selinux.h 2008-08-28 09:34:24.000000000 -0400 ++++ libselinux-2.0.76/include/selinux/selinux.h 2008-12-12 10:06:21.000000000 -0500 +@@ -511,6 +511,14 @@ + Caller must free the returned strings via free. */ + extern int getseuserbyname(const char *linuxuser, char **seuser, char **level); + ++/* Get the SELinux username and level to use for a given Linux username and service. ++ These values may then be passed into the get_ordered_context_list* ++ and get_default_context* functions to obtain a context for the user. ++ Returns 0 on success or -1 otherwise. ++ Caller must free the returned strings via free. */ ++extern int getseuser(const char *username, const char *service, ++ char **r_seuser, char **r_level); ++ + /* Compare two file contexts, return 0 if equivalent. */ + int selinux_file_context_cmp(const security_context_t a, + const security_context_t b); diff --exclude-from=exclude -N -u -r nsalibselinux/man/man8/selinuxconlist.8 libselinux-2.0.76/man/man8/selinuxconlist.8 --- nsalibselinux/man/man8/selinuxconlist.8 1969-12-31 19:00:00.000000000 -0500 -+++ libselinux-2.0.76/man/man8/selinuxconlist.8 2008-11-22 15:57:58.000000000 -0500 ++++ libselinux-2.0.76/man/man8/selinuxconlist.8 2008-12-02 09:14:48.000000000 -0500 @@ -0,0 +1,18 @@ +.TH "selinuxconlist" "1" "7 May 2008" "dwalsh@redhat.com" "SELinux Command Line documentation" +.SH "NAME" @@ -22,7 +40,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/man/man8/selinuxconlist.8 lib +secon(8), selinuxdefcon(8) diff --exclude-from=exclude -N -u -r nsalibselinux/man/man8/selinuxdefcon.8 libselinux-2.0.76/man/man8/selinuxdefcon.8 --- nsalibselinux/man/man8/selinuxdefcon.8 1969-12-31 19:00:00.000000000 -0500 -+++ libselinux-2.0.76/man/man8/selinuxdefcon.8 2008-11-22 15:57:58.000000000 -0500 ++++ libselinux-2.0.76/man/man8/selinuxdefcon.8 2008-12-02 09:14:48.000000000 -0500 @@ -0,0 +1,19 @@ +.TH "selinuxdefcon" "1" "7 May 2008" "dwalsh@redhat.com" "SELinux Command Line documentation" +.SH "NAME" @@ -45,7 +63,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/man/man8/selinuxdefcon.8 libs +secon(8), selinuxconlist(8) diff --exclude-from=exclude -N -u -r nsalibselinux/src/callbacks.c libselinux-2.0.76/src/callbacks.c --- nsalibselinux/src/callbacks.c 2008-08-28 09:34:24.000000000 -0400 -+++ libselinux-2.0.76/src/callbacks.c 2008-11-22 15:57:58.000000000 -0500 ++++ libselinux-2.0.76/src/callbacks.c 2008-12-02 09:14:48.000000000 -0500 @@ -16,6 +16,7 @@ { int rc; @@ -56,7 +74,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/callbacks.c libselinux-2. va_end(ap); diff --exclude-from=exclude -N -u -r nsalibselinux/src/matchpathcon.c libselinux-2.0.76/src/matchpathcon.c --- nsalibselinux/src/matchpathcon.c 2008-08-28 09:34:24.000000000 -0400 -+++ libselinux-2.0.76/src/matchpathcon.c 2008-11-22 15:58:02.000000000 -0500 ++++ libselinux-2.0.76/src/matchpathcon.c 2008-12-02 09:14:48.000000000 -0500 @@ -2,6 +2,7 @@ #include #include @@ -76,11 +94,11 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/matchpathcon.c libselinux diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinux.py libselinux-2.0.76/src/selinux.py --- nsalibselinux/src/selinux.py 2008-08-28 09:34:24.000000000 -0400 -+++ libselinux-2.0.76/src/selinux.py 2008-11-22 15:58:02.000000000 -0500 ++++ libselinux-2.0.76/src/selinux.py 2008-12-12 10:08:01.000000000 -0500 @@ -1,5 +1,5 @@ # This file was automatically generated by SWIG (http://www.swig.org). -# Version 1.3.33 -+# Version 1.3.35 ++# Version 1.3.36 # # Don't modify this file, modify the SWIG interface instead. # This file is compatible with both classic and new-style classes. @@ -114,9 +132,17 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinux.py libselinux-2.0 is_selinux_enabled = _selinux.is_selinux_enabled is_selinux_mls_enabled = _selinux.is_selinux_mls_enabled getcon = _selinux.getcon +@@ -297,6 +320,7 @@ + selinux_trans_to_raw_context = _selinux.selinux_trans_to_raw_context + selinux_raw_to_trans_context = _selinux.selinux_raw_to_trans_context + getseuserbyname = _selinux.getseuserbyname ++getseuser = _selinux.getseuser + 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_python.i libselinux-2.0.76/src/selinuxswig_python.i --- nsalibselinux/src/selinuxswig_python.i 2008-08-28 09:34:24.000000000 -0400 -+++ libselinux-2.0.76/src/selinuxswig_python.i 2008-11-22 15:58:02.000000000 -0500 ++++ libselinux-2.0.76/src/selinuxswig_python.i 2008-12-02 09:14:48.000000000 -0500 @@ -6,6 +6,32 @@ #include "selinux/selinux.h" %} @@ -152,16 +178,29 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_python.i libs PyObject* list = PyList_New(*$2); diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libselinux-2.0.76/src/selinuxswig_wrap.c --- nsalibselinux/src/selinuxswig_wrap.c 2008-08-28 09:34:24.000000000 -0400 -+++ libselinux-2.0.76/src/selinuxswig_wrap.c 2008-11-22 15:58:02.000000000 -0500 ++++ libselinux-2.0.76/src/selinuxswig_wrap.c 2008-12-12 10:08:01.000000000 -0500 @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 1.3.33 -+ * Version 1.3.35 ++ * Version 1.3.36 * * 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 -@@ -126,7 +126,7 @@ +@@ -52,6 +52,12 @@ + # endif + #endif + ++#ifndef SWIG_MSC_UNSUPPRESS_4505 ++# if defined(_MSC_VER) ++# pragma warning(disable : 4505) /* unreferenced local function has been removed */ ++# endif ++#endif ++ + #ifndef SWIGUNUSEDPARM + # ifdef __cplusplus + # define SWIGUNUSEDPARM(p) +@@ -126,7 +132,7 @@ /* This should only be incremented when either the layout of swig_type_info changes, or for whatever reason, the runtime changes incompatibly */ @@ -170,7 +209,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel /* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */ #ifdef SWIG_TYPE_TABLE -@@ -161,6 +161,7 @@ +@@ -161,6 +167,7 @@ /* Flags for pointer conversions */ #define SWIG_POINTER_DISOWN 0x1 @@ -178,7 +217,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel /* Flags for new pointer objects */ #define SWIG_POINTER_OWN 0x1 -@@ -301,10 +302,10 @@ +@@ -301,10 +308,10 @@ extern "C" { #endif @@ -191,7 +230,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel typedef struct swig_type_info { const char *name; /* mangled name of this type */ const char *str; /* human readable name of this type */ -@@ -431,8 +432,8 @@ +@@ -431,8 +438,8 @@ Cast a pointer up an inheritance hierarchy */ SWIGRUNTIMEINLINE void * @@ -202,7 +241,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel } /* -@@ -856,7 +857,7 @@ +@@ -856,7 +863,7 @@ Py_DECREF(old_str); Py_DECREF(value); } else { @@ -211,7 +250,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel } } -@@ -1416,7 +1417,7 @@ +@@ -1416,7 +1423,7 @@ { PySwigObject *sobj = (PySwigObject *) v; PyObject *next = sobj->next; @@ -220,7 +259,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel swig_type_info *ty = sobj->ty; PySwigClientData *data = ty ? (PySwigClientData *) ty->clientdata : 0; PyObject *destroy = data ? data->destroy : 0; -@@ -1434,12 +1435,13 @@ +@@ -1434,12 +1441,13 @@ res = ((*meth)(mself, v)); } Py_XDECREF(res); @@ -238,7 +277,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel } Py_XDECREF(next); PyObject_DEL(v); -@@ -1944,7 +1946,7 @@ +@@ -1944,7 +1952,7 @@ SWIGRUNTIME int SWIG_Python_AcquirePtr(PyObject *obj, int own) { @@ -247,7 +286,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel PySwigObject *sobj = SWIG_Python_GetSwigThis(obj); if (sobj) { int oldown = sobj->own; -@@ -1965,6 +1967,8 @@ +@@ -1965,6 +1973,8 @@ return SWIG_OK; } else { PySwigObject *sobj = SWIG_Python_GetSwigThis(obj); @@ -256,7 +295,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel while (sobj) { void *vptr = sobj->ptr; if (ty) { -@@ -1978,7 +1982,15 @@ +@@ -1978,7 +1988,15 @@ if (!tc) { sobj = (PySwigObject *)sobj->next; } else { @@ -273,7 +312,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel break; } } -@@ -1988,7 +2000,8 @@ +@@ -1988,7 +2006,8 @@ } } if (sobj) { @@ -283,7 +322,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel if (flags & SWIG_POINTER_DISOWN) { sobj->own = 0; } -@@ -2053,8 +2066,13 @@ +@@ -2053,8 +2072,13 @@ } if (ty) { swig_cast_info *tc = SWIG_TypeCheck(desc,ty); @@ -299,16 +338,596 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel } else { *ptr = vptr; } -@@ -2506,7 +2524,7 @@ +@@ -2506,7 +2530,7 @@ #define SWIG_name "_selinux" -#define SWIGVERSION 0x010333 -+#define SWIGVERSION 0x010335 ++#define SWIGVERSION 0x010336 #define SWIG_VERSION SWIGVERSION -@@ -4273,7 +4291,7 @@ +@@ -2910,8 +2934,8 @@ + SWIGINTERN PyObject *_wrap_getcon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t *arg1 = (security_context_t *) 0 ; +- int result; + security_context_t temp1 = 0 ; ++ int result; + + arg1 = &temp1; + if (!PyArg_ParseTuple(args,(char *)":getcon")) SWIG_fail; +@@ -2934,8 +2958,8 @@ + SWIGINTERN PyObject *_wrap_getcon_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t *arg1 = (security_context_t *) 0 ; +- int result; + security_context_t temp1 = 0 ; ++ int result; + + arg1 = &temp1; + if (!PyArg_ParseTuple(args,(char *)":getcon_raw")) SWIG_fail; +@@ -2958,11 +2982,11 @@ + SWIGINTERN PyObject *_wrap_setcon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:setcon",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -2983,11 +3007,11 @@ + SWIGINTERN PyObject *_wrap_setcon_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:setcon_raw",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -3009,11 +3033,11 @@ + PyObject *resultobj = 0; + pid_t arg1 ; + security_context_t *arg2 = (security_context_t *) 0 ; +- int result; + unsigned int val1 ; + int ecode1 = 0 ; + security_context_t temp2 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:getpidcon",&obj0)) SWIG_fail; +@@ -3042,11 +3066,11 @@ + PyObject *resultobj = 0; + pid_t arg1 ; + security_context_t *arg2 = (security_context_t *) 0 ; +- int result; + unsigned int val1 ; + int ecode1 = 0 ; + security_context_t temp2 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:getpidcon_raw",&obj0)) SWIG_fail; +@@ -3074,8 +3098,8 @@ + SWIGINTERN PyObject *_wrap_getprevcon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t *arg1 = (security_context_t *) 0 ; +- int result; + security_context_t temp1 = 0 ; ++ int result; + + arg1 = &temp1; + if (!PyArg_ParseTuple(args,(char *)":getprevcon")) SWIG_fail; +@@ -3098,8 +3122,8 @@ + SWIGINTERN PyObject *_wrap_getprevcon_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t *arg1 = (security_context_t *) 0 ; +- int result; + security_context_t temp1 = 0 ; ++ int result; + + arg1 = &temp1; + if (!PyArg_ParseTuple(args,(char *)":getprevcon_raw")) SWIG_fail; +@@ -3122,8 +3146,8 @@ + SWIGINTERN PyObject *_wrap_getexeccon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t *arg1 = (security_context_t *) 0 ; +- int result; + security_context_t temp1 = 0 ; ++ int result; + + arg1 = &temp1; + if (!PyArg_ParseTuple(args,(char *)":getexeccon")) SWIG_fail; +@@ -3146,8 +3170,8 @@ + SWIGINTERN PyObject *_wrap_getexeccon_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t *arg1 = (security_context_t *) 0 ; +- int result; + security_context_t temp1 = 0 ; ++ int result; + + arg1 = &temp1; + if (!PyArg_ParseTuple(args,(char *)":getexeccon_raw")) SWIG_fail; +@@ -3170,11 +3194,11 @@ + SWIGINTERN PyObject *_wrap_setexeccon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:setexeccon",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -3195,11 +3219,11 @@ + SWIGINTERN PyObject *_wrap_setexeccon_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:setexeccon_raw",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -3220,8 +3244,8 @@ + SWIGINTERN PyObject *_wrap_getfscreatecon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t *arg1 = (security_context_t *) 0 ; +- int result; + security_context_t temp1 = 0 ; ++ int result; + + arg1 = &temp1; + if (!PyArg_ParseTuple(args,(char *)":getfscreatecon")) SWIG_fail; +@@ -3244,8 +3268,8 @@ + SWIGINTERN PyObject *_wrap_getfscreatecon_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t *arg1 = (security_context_t *) 0 ; +- int result; + security_context_t temp1 = 0 ; ++ int result; + + arg1 = &temp1; + if (!PyArg_ParseTuple(args,(char *)":getfscreatecon_raw")) SWIG_fail; +@@ -3268,11 +3292,11 @@ + SWIGINTERN PyObject *_wrap_setfscreatecon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:setfscreatecon",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -3293,11 +3317,11 @@ + SWIGINTERN PyObject *_wrap_setfscreatecon_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:setfscreatecon_raw",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -3318,8 +3342,8 @@ + SWIGINTERN PyObject *_wrap_getkeycreatecon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t *arg1 = (security_context_t *) 0 ; +- int result; + security_context_t temp1 = 0 ; ++ int result; + + arg1 = &temp1; + if (!PyArg_ParseTuple(args,(char *)":getkeycreatecon")) SWIG_fail; +@@ -3342,8 +3366,8 @@ + SWIGINTERN PyObject *_wrap_getkeycreatecon_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t *arg1 = (security_context_t *) 0 ; +- int result; + security_context_t temp1 = 0 ; ++ int result; + + arg1 = &temp1; + if (!PyArg_ParseTuple(args,(char *)":getkeycreatecon_raw")) SWIG_fail; +@@ -3366,11 +3390,11 @@ + SWIGINTERN PyObject *_wrap_setkeycreatecon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:setkeycreatecon",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -3391,11 +3415,11 @@ + SWIGINTERN PyObject *_wrap_setkeycreatecon_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:setkeycreatecon_raw",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -3416,8 +3440,8 @@ + SWIGINTERN PyObject *_wrap_getsockcreatecon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t *arg1 = (security_context_t *) 0 ; +- int result; + security_context_t temp1 = 0 ; ++ int result; + + arg1 = &temp1; + if (!PyArg_ParseTuple(args,(char *)":getsockcreatecon")) SWIG_fail; +@@ -3440,8 +3464,8 @@ + SWIGINTERN PyObject *_wrap_getsockcreatecon_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t *arg1 = (security_context_t *) 0 ; +- int result; + security_context_t temp1 = 0 ; ++ int result; + + arg1 = &temp1; + if (!PyArg_ParseTuple(args,(char *)":getsockcreatecon_raw")) SWIG_fail; +@@ -3464,11 +3488,11 @@ + SWIGINTERN PyObject *_wrap_setsockcreatecon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:setsockcreatecon",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -3489,11 +3513,11 @@ + SWIGINTERN PyObject *_wrap_setsockcreatecon_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:setsockcreatecon_raw",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -3515,12 +3539,12 @@ + 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 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:getfilecon",&obj0)) SWIG_fail; +@@ -3551,12 +3575,12 @@ + 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 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:getfilecon_raw",&obj0)) SWIG_fail; +@@ -3587,12 +3611,12 @@ + 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 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:lgetfilecon",&obj0)) SWIG_fail; +@@ -3623,12 +3647,12 @@ + 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 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:lgetfilecon_raw",&obj0)) SWIG_fail; +@@ -3659,11 +3683,11 @@ + PyObject *resultobj = 0; + int arg1 ; + security_context_t *arg2 = (security_context_t *) 0 ; +- int result; + int val1 ; + int ecode1 = 0 ; + security_context_t temp2 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:fgetfilecon",&obj0)) SWIG_fail; +@@ -3692,11 +3716,11 @@ + PyObject *resultobj = 0; + int arg1 ; + security_context_t *arg2 = (security_context_t *) 0 ; +- int result; + int val1 ; + int ecode1 = 0 ; + security_context_t temp2 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:fgetfilecon_raw",&obj0)) SWIG_fail; +@@ -3725,7 +3749,6 @@ + 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 ; +@@ -3734,6 +3757,7 @@ + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:setfilecon",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -3762,7 +3786,6 @@ + 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 ; +@@ -3771,6 +3794,7 @@ + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:setfilecon_raw",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -3799,7 +3823,6 @@ + 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 ; +@@ -3808,6 +3831,7 @@ + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:lsetfilecon",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -3836,7 +3860,6 @@ + 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 ; +@@ -3845,6 +3868,7 @@ + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:lsetfilecon_raw",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -3873,7 +3897,6 @@ + PyObject *resultobj = 0; + int arg1 ; + security_context_t arg2 = (security_context_t) 0 ; +- int result; + int val1 ; + int ecode1 = 0 ; + int res2 ; +@@ -3881,6 +3904,7 @@ + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:fsetfilecon",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); +@@ -3907,7 +3931,6 @@ + PyObject *resultobj = 0; + int arg1 ; + security_context_t arg2 = (security_context_t) 0 ; +- int result; + int val1 ; + int ecode1 = 0 ; + int res2 ; +@@ -3915,6 +3938,7 @@ + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:fsetfilecon_raw",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); +@@ -3941,11 +3965,11 @@ + PyObject *resultobj = 0; + int arg1 ; + security_context_t *arg2 = (security_context_t *) 0 ; +- int result; + int val1 ; + int ecode1 = 0 ; + security_context_t temp2 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:getpeercon",&obj0)) SWIG_fail; +@@ -3974,11 +3998,11 @@ + PyObject *resultobj = 0; + int arg1 ; + security_context_t *arg2 = (security_context_t *) 0 ; +- int result; + int val1 ; + int ecode1 = 0 ; + security_context_t temp2 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:getpeercon_raw",&obj0)) SWIG_fail; +@@ -4026,7 +4050,6 @@ + } + arg2 = (access_vector_t)(val2); + if (arg1) (arg1)->allowed = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -4037,10 +4060,10 @@ + SWIGINTERN PyObject *_wrap_av_decision_allowed_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct av_decision *arg1 = (struct av_decision *) 0 ; +- access_vector_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ access_vector_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:av_decision_allowed_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_av_decision, 0 | 0 ); +@@ -4079,7 +4102,6 @@ + } + arg2 = (access_vector_t)(val2); + if (arg1) (arg1)->decided = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -4090,10 +4112,10 @@ + SWIGINTERN PyObject *_wrap_av_decision_decided_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct av_decision *arg1 = (struct av_decision *) 0 ; +- access_vector_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ access_vector_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:av_decision_decided_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_av_decision, 0 | 0 ); +@@ -4132,7 +4154,6 @@ + } + arg2 = (access_vector_t)(val2); + if (arg1) (arg1)->auditallow = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -4143,10 +4164,10 @@ + SWIGINTERN PyObject *_wrap_av_decision_auditallow_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct av_decision *arg1 = (struct av_decision *) 0 ; +- access_vector_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ access_vector_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:av_decision_auditallow_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_av_decision, 0 | 0 ); +@@ -4185,7 +4206,6 @@ + } + arg2 = (access_vector_t)(val2); + if (arg1) (arg1)->auditdeny = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -4196,10 +4216,10 @@ + SWIGINTERN PyObject *_wrap_av_decision_auditdeny_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct av_decision *arg1 = (struct av_decision *) 0 ; +- access_vector_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ access_vector_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:av_decision_auditdeny_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_av_decision, 0 | 0 ); +@@ -4238,7 +4258,6 @@ + } + arg2 = (unsigned int)(val2); + if (arg1) (arg1)->seqno = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -4249,10 +4268,10 @@ + SWIGINTERN PyObject *_wrap_av_decision_seqno_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct av_decision *arg1 = (struct av_decision *) 0 ; +- unsigned int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ unsigned int result; + + if (!PyArg_ParseTuple(args,(char *)"O:av_decision_seqno_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_av_decision, 0 | 0 ); +@@ -4273,7 +4292,7 @@ struct av_decision *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_av_decision")) SWIG_fail; @@ -317,6 +936,14 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_av_decision, SWIG_POINTER_NEW | 0 ); return resultobj; fail: +@@ -4295,7 +4314,6 @@ + } + arg1 = (struct av_decision *)(argp1); + free((char *) arg1); +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: @@ -4305,7 +4323,7 @@ SWIGINTERN PyObject *av_decision_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { @@ -326,7 +953,39 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel SWIG_TypeNewClientData(SWIGTYPE_p_av_decision, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } -@@ -4428,7 +4446,7 @@ +@@ -4333,7 +4351,6 @@ + } + arg2 = (int)(val2); + if (arg1) (arg1)->type = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -4344,10 +4361,10 @@ + SWIGINTERN PyObject *_wrap_selinux_opt_type_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct selinux_opt *arg1 = (struct selinux_opt *) 0 ; +- int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:selinux_opt_type_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_selinux_opt, 0 | 0 ); +@@ -4404,10 +4421,10 @@ + SWIGINTERN PyObject *_wrap_selinux_opt_value_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct selinux_opt *arg1 = (struct selinux_opt *) 0 ; +- char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:selinux_opt_value_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_selinux_opt, 0 | 0 ); +@@ -4428,7 +4445,7 @@ struct selinux_opt *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_selinux_opt")) SWIG_fail; @@ -335,7 +994,15 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_selinux_opt, SWIG_POINTER_NEW | 0 ); return resultobj; fail: -@@ -4460,7 +4478,7 @@ +@@ -4450,7 +4467,6 @@ + } + arg1 = (struct selinux_opt *)(argp1); + free((char *) arg1); +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -4460,7 +4476,7 @@ SWIGINTERN PyObject *selinux_opt_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; @@ -344,7 +1011,67 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel SWIG_TypeNewClientData(SWIGTYPE_p_selinux_opt, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } -@@ -4626,7 +4644,7 @@ +@@ -4487,7 +4503,6 @@ + } + } + if (arg1) (arg1)->func_log = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -4498,10 +4513,10 @@ + SWIGINTERN PyObject *_wrap_selinux_callback_func_log_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + union selinux_callback *arg1 = (union selinux_callback *) 0 ; +- int (*result)(int,char const *,...) = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ int (*result)(int,char const *,...) = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:selinux_callback_func_log_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_selinux_callback, 0 | 0 ); +@@ -4539,7 +4554,6 @@ + } + } + if (arg1) (arg1)->func_audit = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -4550,10 +4564,10 @@ + SWIGINTERN PyObject *_wrap_selinux_callback_func_audit_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + union selinux_callback *arg1 = (union selinux_callback *) 0 ; +- int (*result)(void *,security_class_t,char *,size_t) = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ int (*result)(void *,security_class_t,char *,size_t) = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:selinux_callback_func_audit_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_selinux_callback, 0 | 0 ); +@@ -4591,7 +4605,6 @@ + } + } + if (arg1) (arg1)->func_validate = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -4602,10 +4615,10 @@ + SWIGINTERN PyObject *_wrap_selinux_callback_func_validate_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + union selinux_callback *arg1 = (union selinux_callback *) 0 ; +- int (*result)(security_context_t *) = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ int (*result)(security_context_t *) = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:selinux_callback_func_validate_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_selinux_callback, 0 | 0 ); +@@ -4626,7 +4639,7 @@ union selinux_callback *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_selinux_callback")) SWIG_fail; @@ -353,7 +1080,15 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_selinux_callback, SWIG_POINTER_NEW | 0 ); return resultobj; fail: -@@ -4658,7 +4676,7 @@ +@@ -4648,7 +4661,6 @@ + } + arg1 = (union selinux_callback *)(argp1); + free((char *) arg1); +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -4658,7 +4670,7 @@ SWIGINTERN PyObject *selinux_callback_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; @@ -362,7 +1097,276 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel SWIG_TypeNewClientData(SWIGTYPE_p_selinux_callback, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } -@@ -5586,7 +5604,7 @@ +@@ -4666,10 +4678,10 @@ + SWIGINTERN PyObject *_wrap_selinux_get_callback(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + int arg1 ; +- union selinux_callback result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; ++ union selinux_callback result; + + if (!PyArg_ParseTuple(args,(char *)"O:selinux_get_callback",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); +@@ -4728,7 +4740,6 @@ + security_class_t arg3 ; + access_vector_t arg4 ; + struct av_decision *arg5 = (struct av_decision *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -4746,6 +4757,7 @@ + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OOOOO:security_compute_av",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -4792,7 +4804,6 @@ + security_class_t arg3 ; + access_vector_t arg4 ; + struct av_decision *arg5 = (struct av_decision *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -4810,6 +4821,7 @@ + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OOOOO:security_compute_av_raw",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -4855,7 +4867,6 @@ + security_context_t arg2 = (security_context_t) 0 ; + security_class_t arg3 ; + security_context_t *arg4 = (security_context_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -4868,6 +4879,7 @@ + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; ++ int result; + + arg4 = &temp4; + if (!PyArg_ParseTuple(args,(char *)"OOO:security_compute_create",&obj0,&obj1,&obj2)) SWIG_fail; +@@ -4912,7 +4924,6 @@ + security_context_t arg2 = (security_context_t) 0 ; + security_class_t arg3 ; + security_context_t *arg4 = (security_context_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -4925,6 +4936,7 @@ + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; ++ int result; + + arg4 = &temp4; + if (!PyArg_ParseTuple(args,(char *)"OOO:security_compute_create_raw",&obj0,&obj1,&obj2)) SWIG_fail; +@@ -4969,7 +4981,6 @@ + security_context_t arg2 = (security_context_t) 0 ; + security_class_t arg3 ; + security_context_t *arg4 = (security_context_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -4982,6 +4993,7 @@ + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; ++ int result; + + arg4 = &temp4; + if (!PyArg_ParseTuple(args,(char *)"OOO:security_compute_relabel",&obj0,&obj1,&obj2)) SWIG_fail; +@@ -5026,7 +5038,6 @@ + security_context_t arg2 = (security_context_t) 0 ; + security_class_t arg3 ; + security_context_t *arg4 = (security_context_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -5039,6 +5050,7 @@ + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; ++ int result; + + arg4 = &temp4; + if (!PyArg_ParseTuple(args,(char *)"OOO:security_compute_relabel_raw",&obj0,&obj1,&obj2)) SWIG_fail; +@@ -5083,7 +5095,6 @@ + security_context_t arg2 = (security_context_t) 0 ; + security_class_t arg3 ; + security_context_t *arg4 = (security_context_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -5096,6 +5107,7 @@ + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; ++ int result; + + arg4 = &temp4; + if (!PyArg_ParseTuple(args,(char *)"OOO:security_compute_member",&obj0,&obj1,&obj2)) SWIG_fail; +@@ -5140,7 +5152,6 @@ + security_context_t arg2 = (security_context_t) 0 ; + security_class_t arg3 ; + security_context_t *arg4 = (security_context_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -5153,6 +5164,7 @@ + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; ++ int result; + + arg4 = &temp4; + if (!PyArg_ParseTuple(args,(char *)"OOO:security_compute_member_raw",&obj0,&obj1,&obj2)) SWIG_fail; +@@ -5196,7 +5208,6 @@ + security_context_t arg1 = (security_context_t) 0 ; + char *arg2 = (char *) 0 ; + security_context_t **arg3 = (security_context_t **) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -5206,6 +5217,7 @@ + security_context_t *temp3 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + { + arg3 = &temp3; +@@ -5261,7 +5273,6 @@ + security_context_t arg1 = (security_context_t) 0 ; + char *arg2 = (char *) 0 ; + security_context_t **arg3 = (security_context_t **) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -5271,6 +5282,7 @@ + security_context_t *temp3 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + { + arg3 = &temp3; +@@ -5325,12 +5337,12 @@ + PyObject *resultobj = 0; + void *arg1 = (void *) 0 ; + size_t arg2 ; +- int result; + int res1 ; + size_t val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:security_load_policy",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0,SWIG_as_voidptrptr(&arg1), 0, 0); +@@ -5354,12 +5366,12 @@ + 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 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:security_get_initial_context",&obj0)) SWIG_fail; +@@ -5390,12 +5402,12 @@ + 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 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:security_get_initial_context_raw",&obj0)) SWIG_fail; +@@ -5425,10 +5437,10 @@ + SWIGINTERN PyObject *_wrap_selinux_mkload_policy(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + int arg1 ; +- int result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:selinux_mkload_policy",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); +@@ -5447,9 +5459,9 @@ + SWIGINTERN PyObject *_wrap_selinux_init_load_policy(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + int *arg1 = (int *) 0 ; +- int result; + int temp1 ; + int res1 = SWIG_TMPOBJ ; ++ int result; + + arg1 = &temp1; + if (!PyArg_ParseTuple(args,(char *)":selinux_init_load_policy")) SWIG_fail; +@@ -5509,10 +5521,10 @@ + SWIGINTERN PyObject *_wrap_SELboolean_name_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + SELboolean *arg1 = (SELboolean *) 0 ; +- char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:SELboolean_name_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_SELboolean, 0 | 0 ); +@@ -5551,7 +5563,6 @@ + } + arg2 = (int)(val2); + if (arg1) (arg1)->value = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -5562,10 +5573,10 @@ + SWIGINTERN PyObject *_wrap_SELboolean_value_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + SELboolean *arg1 = (SELboolean *) 0 ; +- int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:SELboolean_value_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_SELboolean, 0 | 0 ); +@@ -5586,7 +5597,7 @@ SELboolean *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_SELboolean")) SWIG_fail; @@ -371,7 +1375,15 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_SELboolean, SWIG_POINTER_NEW | 0 ); return resultobj; fail: -@@ -5618,7 +5636,7 @@ +@@ -5608,7 +5619,6 @@ + } + arg1 = (SELboolean *)(argp1); + free((char *) arg1); +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -5618,7 +5628,7 @@ SWIGINTERN PyObject *SELboolean_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; @@ -380,7 +1392,179 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel SWIG_TypeNewClientData(SWIGTYPE_p_SELboolean, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } -@@ -6139,7 +6157,7 @@ +@@ -5628,7 +5638,6 @@ + size_t arg1 ; + SELboolean *arg2 = (SELboolean *) 0 ; + int arg3 ; +- int result; + size_t val1 ; + int ecode1 = 0 ; + void *argp2 = 0 ; +@@ -5638,6 +5647,7 @@ + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OOO:security_set_boolean_list",&obj0,&obj1,&obj2)) SWIG_fail; + ecode1 = SWIG_AsVal_size_t(obj0, &val1); +@@ -5666,11 +5676,11 @@ + SWIGINTERN PyObject *_wrap_security_load_booleans(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 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:security_load_booleans",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -5691,11 +5701,11 @@ + SWIGINTERN PyObject *_wrap_security_check_context(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:security_check_context",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -5716,11 +5726,11 @@ + SWIGINTERN PyObject *_wrap_security_check_context_raw(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:security_check_context_raw",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -5742,12 +5752,12 @@ + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; + security_context_t *arg2 = (security_context_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + security_context_t temp2 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:security_canonicalize_context",&obj0)) SWIG_fail; +@@ -5778,12 +5788,12 @@ + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; + security_context_t *arg2 = (security_context_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + security_context_t temp2 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:security_canonicalize_context_raw",&obj0)) SWIG_fail; +@@ -5826,10 +5836,10 @@ + SWIGINTERN PyObject *_wrap_security_setenforce(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + int arg1 ; +- int result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:security_setenforce",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); +@@ -5875,9 +5885,9 @@ + PyObject *resultobj = 0; + char ***arg1 = (char ***) 0 ; + int *arg2 = (int *) 0 ; +- int result; + char **temp11 ; + int temp21 ; ++ int result; + + { + arg1 = &temp11; +@@ -5921,11 +5931,11 @@ + SWIGINTERN PyObject *_wrap_security_get_boolean_pending(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 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:security_get_boolean_pending",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -5946,11 +5956,11 @@ + SWIGINTERN PyObject *_wrap_security_get_boolean_active(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 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:security_get_boolean_active",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -5972,7 +5982,6 @@ + PyObject *resultobj = 0; + char *arg1 = (char *) 0 ; + int arg2 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -5980,6 +5989,7 @@ + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:security_set_boolean",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -6056,10 +6066,10 @@ + SWIGINTERN PyObject *_wrap_security_class_mapping_name_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct security_class_mapping *arg1 = (struct security_class_mapping *) 0 ; +- char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:security_class_mapping_name_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_security_class_mapping, 0 | 0 ); +@@ -6115,10 +6125,10 @@ + SWIGINTERN PyObject *_wrap_security_class_mapping_perms_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct security_class_mapping *arg1 = (struct security_class_mapping *) 0 ; +- char **result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ char **result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:security_class_mapping_perms_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_security_class_mapping, 0 | 0 ); +@@ -6139,7 +6149,7 @@ struct security_class_mapping *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_security_class_mapping")) SWIG_fail; @@ -389,7 +1573,15 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_security_class_mapping, SWIG_POINTER_NEW | 0 ); return resultobj; fail: -@@ -6171,7 +6189,7 @@ +@@ -6161,7 +6171,6 @@ + } + arg1 = (struct security_class_mapping *)(argp1); + free((char *) arg1); +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -6171,7 +6180,7 @@ SWIGINTERN PyObject *security_class_mapping_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; @@ -398,7 +1590,452 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel SWIG_TypeNewClientData(SWIGTYPE_p_security_class_mapping, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } -@@ -7596,7 +7614,7 @@ +@@ -6179,10 +6188,10 @@ + SWIGINTERN PyObject *_wrap_selinux_set_mapping(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct security_class_mapping *arg1 = (struct security_class_mapping *) 0 ; +- int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:selinux_set_mapping",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_security_class_mapping, 0 | 0 ); +@@ -6201,11 +6210,11 @@ + SWIGINTERN PyObject *_wrap_string_to_security_class(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + char *arg1 = (char *) 0 ; +- security_class_t result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + PyObject * obj0 = 0 ; ++ security_class_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:string_to_security_class",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -6226,10 +6235,10 @@ + SWIGINTERN PyObject *_wrap_security_class_to_string(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_class_t arg1 ; +- char *result = 0 ; + unsigned short val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; ++ char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:security_class_to_string",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_unsigned_SS_short(obj0, &val1); +@@ -6249,13 +6258,13 @@ + PyObject *resultobj = 0; + security_class_t arg1 ; + access_vector_t arg2 ; +- char *result = 0 ; + unsigned short val1 ; + int ecode1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ char *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:security_av_perm_to_string",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_unsigned_SS_short(obj0, &val1); +@@ -6280,7 +6289,6 @@ + PyObject *resultobj = 0; + security_class_t arg1 ; + char *arg2 = (char *) 0 ; +- access_vector_t result; + unsigned short val1 ; + int ecode1 = 0 ; + int res2 ; +@@ -6288,6 +6296,7 @@ + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ access_vector_t result; + + if (!PyArg_ParseTuple(args,(char *)"OO:string_to_av_perm",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_unsigned_SS_short(obj0, &val1); +@@ -6315,7 +6324,6 @@ + security_class_t arg1 ; + access_vector_t arg2 ; + char **arg3 = (char **) 0 ; +- int result; + unsigned short val1 ; + int ecode1 = 0 ; + unsigned int val2 ; +@@ -6323,6 +6331,7 @@ + char *temp3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + arg3 = &temp3; + if (!PyArg_ParseTuple(args,(char *)"OO:security_av_string",&obj0,&obj1)) SWIG_fail; +@@ -6406,11 +6415,11 @@ + SWIGINTERN PyObject *_wrap_matchpathcon_init(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 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:matchpathcon_init",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -6432,7 +6441,6 @@ + PyObject *resultobj = 0; + char *arg1 = (char *) 0 ; + char *arg2 = (char *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -6441,6 +6449,7 @@ + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:matchpathcon_init_prefix",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -6482,7 +6491,6 @@ + char *arg1 = (char *) 0 ; + mode_t arg2 ; + security_context_t *arg3 = (security_context_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -6491,6 +6499,7 @@ + security_context_t temp3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + arg3 = &temp3; + if (!PyArg_ParseTuple(args,(char *)"OO:matchpathcon",&obj0,&obj1)) SWIG_fail; +@@ -6527,7 +6536,6 @@ + char *arg1 = (char *) 0 ; + mode_t arg2 ; + security_context_t *arg3 = (security_context_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -6536,6 +6544,7 @@ + security_context_t temp3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + arg3 = &temp3; + if (!PyArg_ParseTuple(args,(char *)"OO:matchpathcon_index",&obj0,&obj1)) SWIG_fail; +@@ -6572,7 +6581,6 @@ + ino_t arg1 ; + int arg2 ; + char *arg3 = (char *) 0 ; +- int result; + void *argp1 ; + int res1 = 0 ; + int val2 ; +@@ -6583,6 +6591,7 @@ + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OOO:matchpathcon_filespec_add",&obj0,&obj1,&obj2)) SWIG_fail; + { +@@ -6668,12 +6677,12 @@ + 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 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:matchmediacon",&obj0)) SWIG_fail; +@@ -6703,9 +6712,9 @@ + SWIGINTERN PyObject *_wrap_selinux_getenforcemode(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + int *arg1 = (int *) 0 ; +- int result; + int temp1 ; + int res1 = SWIG_TMPOBJ ; ++ int result; + + arg1 = &temp1; + if (!PyArg_ParseTuple(args,(char *)":selinux_getenforcemode")) SWIG_fail; +@@ -6726,8 +6735,8 @@ + SWIGINTERN PyObject *_wrap_selinux_getpolicytype(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + char **arg1 = (char **) 0 ; +- int result; + char *temp1 = 0 ; ++ int result; + + arg1 = &temp1; + if (!PyArg_ParseTuple(args,(char *)":selinux_getpolicytype")) SWIG_fail; +@@ -7023,10 +7032,10 @@ + SWIGINTERN PyObject *_wrap_selinux_check_passwd_access(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + access_vector_t arg1 ; +- int result; + unsigned int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:selinux_check_passwd_access",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_unsigned_SS_int(obj0, &val1); +@@ -7045,10 +7054,10 @@ + SWIGINTERN PyObject *_wrap_checkPasswdAccess(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + access_vector_t arg1 ; +- int result; + unsigned int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:checkPasswdAccess",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_unsigned_SS_int(obj0, &val1); +@@ -7067,11 +7076,11 @@ + SWIGINTERN PyObject *_wrap_selinux_check_securetty_context(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:selinux_check_securetty_context",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -7119,7 +7128,6 @@ + char *arg2 = (char *) 0 ; + char **arg3 ; + char **arg4 ; +- int result; + unsigned int val1 ; + int ecode1 = 0 ; + int res2 ; +@@ -7129,6 +7137,7 @@ + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OOOO:rpm_execcon",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; + ecode1 = SWIG_AsVal_unsigned_SS_int(obj0, &val1); +@@ -7240,11 +7249,11 @@ + SWIGINTERN PyObject *_wrap_is_context_customizable(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:is_context_customizable",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -7266,12 +7275,12 @@ + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; + security_context_t *arg2 = (security_context_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + security_context_t temp2 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:selinux_trans_to_raw_context",&obj0)) SWIG_fail; +@@ -7302,12 +7311,12 @@ + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; + security_context_t *arg2 = (security_context_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + security_context_t temp2 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:selinux_raw_to_trans_context",&obj0)) SWIG_fail; +@@ -7339,13 +7348,13 @@ + char *arg1 = (char *) 0 ; + char **arg2 = (char **) 0 ; + char **arg3 = (char **) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + char *temp2 = 0 ; + char *temp3 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + arg3 = &temp3; +@@ -7381,11 +7390,69 @@ + } + + ++SWIGINTERN PyObject *_wrap_getseuser(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { ++ PyObject *resultobj = 0; ++ char *arg1 = (char *) 0 ; ++ char *arg2 = (char *) 0 ; ++ char **arg3 = (char **) 0 ; ++ char **arg4 = (char **) 0 ; ++ int res1 ; ++ char *buf1 = 0 ; ++ int alloc1 = 0 ; ++ int res2 ; ++ char *buf2 = 0 ; ++ int alloc2 = 0 ; ++ char *temp3 = 0 ; ++ char *temp4 = 0 ; ++ PyObject * obj0 = 0 ; ++ PyObject * obj1 = 0 ; ++ int result; ++ ++ arg3 = &temp3; ++ arg4 = &temp4; ++ if (!PyArg_ParseTuple(args,(char *)"OO:getseuser",&obj0,&obj1)) SWIG_fail; ++ res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); ++ if (!SWIG_IsOK(res1)) { ++ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "getseuser" "', 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 '" "getseuser" "', argument " "2"" of type '" "char const *""'"); ++ } ++ arg2 = (char *)(buf2); ++ result = (int)getseuser((char const *)arg1,(char const *)arg2,arg3,arg4); ++ resultobj = SWIG_From_int((int)(result)); ++ if (*arg3) { ++ resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_FromCharPtr(*arg3)); ++ free(*arg3); ++ } ++ else { ++ Py_INCREF(Py_None); ++ resultobj = SWIG_Python_AppendOutput(resultobj, Py_None); ++ } ++ if (*arg4) { ++ resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_FromCharPtr(*arg4)); ++ free(*arg4); ++ } ++ else { ++ Py_INCREF(Py_None); ++ resultobj = SWIG_Python_AppendOutput(resultobj, Py_None); ++ } ++ 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_selinux_file_context_cmp(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) (security_context_t)0 ; + security_context_t arg2 = (security_context_t) (security_context_t)0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -7394,6 +7461,7 @@ + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:selinux_file_context_cmp",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -7422,7 +7490,6 @@ + PyObject *resultobj = 0; + char *arg1 = (char *) 0 ; + mode_t arg2 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -7430,6 +7497,7 @@ + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:selinux_file_context_verify",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -7455,11 +7523,11 @@ + 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 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:selinux_lsetfilecon_default",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -7519,10 +7587,10 @@ + SWIGINTERN PyObject *_wrap_security_id_ctx_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct security_id *arg1 = (struct security_id *) 0 ; +- security_context_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ security_context_t result; + + if (!PyArg_ParseTuple(args,(char *)"O:security_id_ctx_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_security_id, 0 | 0 ); +@@ -7561,7 +7629,6 @@ + } + arg2 = (unsigned int)(val2); + if (arg1) (arg1)->refcnt = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -7572,10 +7639,10 @@ + SWIGINTERN PyObject *_wrap_security_id_refcnt_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct security_id *arg1 = (struct security_id *) 0 ; +- unsigned int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ unsigned int result; + + if (!PyArg_ParseTuple(args,(char *)"O:security_id_refcnt_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_security_id, 0 | 0 ); +@@ -7596,7 +7663,7 @@ struct security_id *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_security_id")) SWIG_fail; @@ -407,7 +2044,15 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_security_id, SWIG_POINTER_NEW | 0 ); return resultobj; fail: -@@ -7628,7 +7646,7 @@ +@@ -7618,7 +7685,6 @@ + } + arg1 = (struct security_id *)(argp1); + free((char *) arg1); +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -7628,7 +7694,7 @@ SWIGINTERN PyObject *security_id_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; @@ -416,7 +2061,119 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel SWIG_TypeNewClientData(SWIGTYPE_p_security_id, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } -@@ -7915,7 +7933,7 @@ +@@ -7637,11 +7703,11 @@ + PyObject *resultobj = 0; + security_id_t arg1 = (security_id_t) 0 ; + security_context_t *arg2 = (security_context_t *) 0 ; +- int result; + void *argp1 = 0 ; + int res1 = 0 ; + security_context_t temp2 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:avc_sid_to_context",&obj0)) SWIG_fail; +@@ -7670,11 +7736,11 @@ + PyObject *resultobj = 0; + security_id_t arg1 = (security_id_t) 0 ; + security_context_t *arg2 = (security_context_t *) 0 ; +- int result; + void *argp1 = 0 ; + int res1 = 0 ; + security_context_t temp2 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:avc_sid_to_context_raw",&obj0)) SWIG_fail; +@@ -7703,12 +7769,12 @@ + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; + security_id_t *arg2 = (security_id_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + security_id_t temp2 ; + PyObject * obj0 = 0 ; ++ int result; + + { + arg2 = &temp2; +@@ -7741,12 +7807,12 @@ + PyObject *resultobj = 0; + security_context_t arg1 = (security_context_t) 0 ; + security_id_t *arg2 = (security_id_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + security_id_t temp2 ; + PyObject * obj0 = 0 ; ++ int result; + + { + arg2 = &temp2; +@@ -7778,10 +7844,10 @@ + SWIGINTERN PyObject *_wrap_sidget(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_id_t arg1 = (security_id_t) 0 ; +- int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:sidget",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_security_id, 0 | 0 ); +@@ -7800,10 +7866,10 @@ + SWIGINTERN PyObject *_wrap_sidput(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + security_id_t arg1 = (security_id_t) 0 ; +- int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"O:sidput",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_security_id, 0 | 0 ); +@@ -7823,12 +7889,12 @@ + PyObject *resultobj = 0; + char *arg1 = (char *) 0 ; + security_id_t *arg2 = (security_id_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + security_id_t temp2 ; + PyObject * obj0 = 0 ; ++ int result; + + { + arg2 = &temp2; +@@ -7880,7 +7946,6 @@ + } + arg2 = (struct avc_entry *)(argp2); + if (arg1) (arg1)->ae = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -7891,10 +7956,10 @@ + SWIGINTERN PyObject *_wrap_avc_entry_ref_ae_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_entry_ref *arg1 = (struct avc_entry_ref *) 0 ; +- struct avc_entry *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ struct avc_entry *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_entry_ref_ae_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_entry_ref, 0 | 0 ); +@@ -7915,7 +7980,7 @@ struct avc_entry_ref *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_avc_entry_ref")) SWIG_fail; @@ -425,7 +2182,15 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_avc_entry_ref, SWIG_POINTER_NEW | 0 ); return resultobj; fail: -@@ -7947,7 +7965,7 @@ +@@ -7937,7 +8002,6 @@ + } + arg1 = (struct avc_entry_ref *)(argp1); + free((char *) arg1); +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -7947,7 +8011,7 @@ SWIGINTERN PyObject *avc_entry_ref_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; @@ -434,7 +2199,47 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel SWIG_TypeNewClientData(SWIGTYPE_p_avc_entry_ref, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } -@@ -8061,7 +8079,7 @@ +@@ -7974,7 +8038,6 @@ + } + } + if (arg1) (arg1)->func_malloc = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -7985,10 +8048,10 @@ + SWIGINTERN PyObject *_wrap_avc_memory_callback_func_malloc_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_memory_callback *arg1 = (struct avc_memory_callback *) 0 ; +- void *(*result)(size_t) = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ void *(*result)(size_t) = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_memory_callback_func_malloc_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_memory_callback, 0 | 0 ); +@@ -8026,7 +8089,6 @@ + } + } + if (arg1) (arg1)->func_free = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -8037,10 +8099,10 @@ + SWIGINTERN PyObject *_wrap_avc_memory_callback_func_free_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_memory_callback *arg1 = (struct avc_memory_callback *) 0 ; +- void (*result)(void *) = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ void (*result)(void *) = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_memory_callback_func_free_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_memory_callback, 0 | 0 ); +@@ -8061,7 +8123,7 @@ struct avc_memory_callback *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_avc_memory_callback")) SWIG_fail; @@ -443,7 +2248,15 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_avc_memory_callback, SWIG_POINTER_NEW | 0 ); return resultobj; fail: -@@ -8093,7 +8111,7 @@ +@@ -8083,7 +8145,6 @@ + } + arg1 = (struct avc_memory_callback *)(argp1); + free((char *) arg1); +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -8093,7 +8154,7 @@ SWIGINTERN PyObject *avc_memory_callback_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; @@ -452,7 +2265,47 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel SWIG_TypeNewClientData(SWIGTYPE_p_avc_memory_callback, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } -@@ -8207,7 +8225,7 @@ +@@ -8120,7 +8181,6 @@ + } + } + if (arg1) (arg1)->func_log = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -8131,10 +8191,10 @@ + SWIGINTERN PyObject *_wrap_avc_log_callback_func_log_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_log_callback *arg1 = (struct avc_log_callback *) 0 ; +- void (*result)(char const *,...) = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ void (*result)(char const *,...) = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_log_callback_func_log_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_log_callback, 0 | 0 ); +@@ -8172,7 +8232,6 @@ + } + } + if (arg1) (arg1)->func_audit = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -8183,10 +8242,10 @@ + SWIGINTERN PyObject *_wrap_avc_log_callback_func_audit_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_log_callback *arg1 = (struct avc_log_callback *) 0 ; +- void (*result)(void *,security_class_t,char *,size_t) = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ void (*result)(void *,security_class_t,char *,size_t) = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_log_callback_func_audit_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_log_callback, 0 | 0 ); +@@ -8207,7 +8266,7 @@ struct avc_log_callback *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_avc_log_callback")) SWIG_fail; @@ -461,7 +2314,15 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_avc_log_callback, SWIG_POINTER_NEW | 0 ); return resultobj; fail: -@@ -8239,7 +8257,7 @@ +@@ -8229,7 +8288,6 @@ + } + arg1 = (struct avc_log_callback *)(argp1); + free((char *) arg1); +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -8239,7 +8297,7 @@ SWIGINTERN PyObject *avc_log_callback_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; @@ -470,7 +2331,47 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel SWIG_TypeNewClientData(SWIGTYPE_p_avc_log_callback, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } -@@ -8353,7 +8371,7 @@ +@@ -8266,7 +8324,6 @@ + } + } + if (arg1) (arg1)->func_create_thread = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -8277,10 +8334,10 @@ + SWIGINTERN PyObject *_wrap_avc_thread_callback_func_create_thread_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_thread_callback *arg1 = (struct avc_thread_callback *) 0 ; +- void *(*result)(void (*)(void)) = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ void *(*result)(void (*)(void)) = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_thread_callback_func_create_thread_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_thread_callback, 0 | 0 ); +@@ -8318,7 +8375,6 @@ + } + } + if (arg1) (arg1)->func_stop_thread = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -8329,10 +8385,10 @@ + SWIGINTERN PyObject *_wrap_avc_thread_callback_func_stop_thread_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_thread_callback *arg1 = (struct avc_thread_callback *) 0 ; +- void (*result)(void *) = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ void (*result)(void *) = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_thread_callback_func_stop_thread_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_thread_callback, 0 | 0 ); +@@ -8353,7 +8409,7 @@ struct avc_thread_callback *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_avc_thread_callback")) SWIG_fail; @@ -479,7 +2380,15 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_avc_thread_callback, SWIG_POINTER_NEW | 0 ); return resultobj; fail: -@@ -8385,7 +8403,7 @@ +@@ -8375,7 +8431,6 @@ + } + arg1 = (struct avc_thread_callback *)(argp1); + free((char *) arg1); +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -8385,7 +8440,7 @@ SWIGINTERN PyObject *avc_thread_callback_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; @@ -488,7 +2397,87 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel SWIG_TypeNewClientData(SWIGTYPE_p_avc_thread_callback, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } -@@ -8603,7 +8621,7 @@ +@@ -8412,7 +8467,6 @@ + } + } + if (arg1) (arg1)->func_alloc_lock = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -8423,10 +8477,10 @@ + SWIGINTERN PyObject *_wrap_avc_lock_callback_func_alloc_lock_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_lock_callback *arg1 = (struct avc_lock_callback *) 0 ; +- void *(*result)(void) = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ void *(*result)(void) = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_lock_callback_func_alloc_lock_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_lock_callback, 0 | 0 ); +@@ -8464,7 +8518,6 @@ + } + } + if (arg1) (arg1)->func_get_lock = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -8475,10 +8528,10 @@ + SWIGINTERN PyObject *_wrap_avc_lock_callback_func_get_lock_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_lock_callback *arg1 = (struct avc_lock_callback *) 0 ; +- void (*result)(void *) = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ void (*result)(void *) = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_lock_callback_func_get_lock_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_lock_callback, 0 | 0 ); +@@ -8516,7 +8569,6 @@ + } + } + if (arg1) (arg1)->func_release_lock = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -8527,10 +8579,10 @@ + SWIGINTERN PyObject *_wrap_avc_lock_callback_func_release_lock_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_lock_callback *arg1 = (struct avc_lock_callback *) 0 ; +- void (*result)(void *) = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ void (*result)(void *) = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_lock_callback_func_release_lock_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_lock_callback, 0 | 0 ); +@@ -8568,7 +8620,6 @@ + } + } + if (arg1) (arg1)->func_free_lock = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -8579,10 +8630,10 @@ + SWIGINTERN PyObject *_wrap_avc_lock_callback_func_free_lock_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_lock_callback *arg1 = (struct avc_lock_callback *) 0 ; +- void (*result)(void *) = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ void (*result)(void *) = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_lock_callback_func_free_lock_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_lock_callback, 0 | 0 ); +@@ -8603,7 +8654,7 @@ struct avc_lock_callback *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_avc_lock_callback")) SWIG_fail; @@ -497,7 +2486,15 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_avc_lock_callback, SWIG_POINTER_NEW | 0 ); return resultobj; fail: -@@ -8635,7 +8653,7 @@ +@@ -8625,7 +8676,6 @@ + } + arg1 = (struct avc_lock_callback *)(argp1); + free((char *) arg1); +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -8635,7 +8685,7 @@ SWIGINTERN PyObject *avc_lock_callback_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; @@ -506,7 +2503,262 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel SWIG_TypeNewClientData(SWIGTYPE_p_avc_lock_callback, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } -@@ -9493,7 +9511,7 @@ +@@ -8647,7 +8697,6 @@ + struct avc_log_callback *arg3 = (struct avc_log_callback *) 0 ; + struct avc_thread_callback *arg4 = (struct avc_thread_callback *) 0 ; + struct avc_lock_callback *arg5 = (struct avc_lock_callback *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -8664,6 +8713,7 @@ + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OOOOO:avc_init",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); +@@ -8705,13 +8755,13 @@ + PyObject *resultobj = 0; + struct selinux_opt *arg1 = (struct selinux_opt *) 0 ; + unsigned int arg2 ; +- int result; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:avc_open",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_selinux_opt, 0 | 0 ); +@@ -8777,7 +8827,6 @@ + access_vector_t arg4 ; + struct avc_entry_ref *arg5 = (struct avc_entry_ref *) 0 ; + struct av_decision *arg6 = (struct av_decision *) 0 ; +- int result; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; +@@ -8796,6 +8845,7 @@ + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OOOOOO:avc_has_perm_noaudit",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_security_id, 0 | 0 ); +@@ -8844,7 +8894,6 @@ + access_vector_t arg4 ; + struct avc_entry_ref *arg5 = (struct avc_entry_ref *) 0 ; + void *arg6 = (void *) 0 ; +- int result; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; +@@ -8862,6 +8911,7 @@ + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; ++ int result; + + if (!PyArg_ParseTuple(args,(char *)"OOOOOO:avc_has_perm",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_security_id, 0 | 0 ); +@@ -8980,7 +9030,6 @@ + security_id_t arg2 = (security_id_t) 0 ; + security_class_t arg3 ; + security_id_t *arg4 = (security_id_t *) 0 ; +- int result; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; +@@ -8991,6 +9040,7 @@ + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; ++ int result; + + { + arg4 = &temp4; +@@ -9025,7 +9075,6 @@ + security_id_t arg2 = (security_id_t) 0 ; + security_class_t arg3 ; + security_id_t *arg4 = (security_id_t *) 0 ; +- int result; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; +@@ -9036,6 +9085,7 @@ + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; ++ int result; + + { + arg4 = &temp4; +@@ -9087,7 +9137,6 @@ + } + arg2 = (unsigned int)(val2); + if (arg1) (arg1)->entry_lookups = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -9098,10 +9147,10 @@ + SWIGINTERN PyObject *_wrap_avc_cache_stats_entry_lookups_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_cache_stats *arg1 = (struct avc_cache_stats *) 0 ; +- unsigned int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ unsigned int result; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_cache_stats_entry_lookups_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_cache_stats, 0 | 0 ); +@@ -9140,7 +9189,6 @@ + } + arg2 = (unsigned int)(val2); + if (arg1) (arg1)->entry_hits = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -9151,10 +9199,10 @@ + SWIGINTERN PyObject *_wrap_avc_cache_stats_entry_hits_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_cache_stats *arg1 = (struct avc_cache_stats *) 0 ; +- unsigned int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ unsigned int result; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_cache_stats_entry_hits_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_cache_stats, 0 | 0 ); +@@ -9193,7 +9241,6 @@ + } + arg2 = (unsigned int)(val2); + if (arg1) (arg1)->entry_misses = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -9204,10 +9251,10 @@ + SWIGINTERN PyObject *_wrap_avc_cache_stats_entry_misses_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_cache_stats *arg1 = (struct avc_cache_stats *) 0 ; +- unsigned int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ unsigned int result; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_cache_stats_entry_misses_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_cache_stats, 0 | 0 ); +@@ -9246,7 +9293,6 @@ + } + arg2 = (unsigned int)(val2); + if (arg1) (arg1)->entry_discards = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -9257,10 +9303,10 @@ + SWIGINTERN PyObject *_wrap_avc_cache_stats_entry_discards_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_cache_stats *arg1 = (struct avc_cache_stats *) 0 ; +- unsigned int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ unsigned int result; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_cache_stats_entry_discards_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_cache_stats, 0 | 0 ); +@@ -9299,7 +9345,6 @@ + } + arg2 = (unsigned int)(val2); + if (arg1) (arg1)->cav_lookups = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -9310,10 +9355,10 @@ + SWIGINTERN PyObject *_wrap_avc_cache_stats_cav_lookups_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_cache_stats *arg1 = (struct avc_cache_stats *) 0 ; +- unsigned int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ unsigned int result; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_cache_stats_cav_lookups_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_cache_stats, 0 | 0 ); +@@ -9352,7 +9397,6 @@ + } + arg2 = (unsigned int)(val2); + if (arg1) (arg1)->cav_hits = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -9363,10 +9407,10 @@ + SWIGINTERN PyObject *_wrap_avc_cache_stats_cav_hits_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_cache_stats *arg1 = (struct avc_cache_stats *) 0 ; +- unsigned int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ unsigned int result; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_cache_stats_cav_hits_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_cache_stats, 0 | 0 ); +@@ -9405,7 +9449,6 @@ + } + arg2 = (unsigned int)(val2); + if (arg1) (arg1)->cav_probes = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -9416,10 +9459,10 @@ + SWIGINTERN PyObject *_wrap_avc_cache_stats_cav_probes_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_cache_stats *arg1 = (struct avc_cache_stats *) 0 ; +- unsigned int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ unsigned int result; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_cache_stats_cav_probes_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_cache_stats, 0 | 0 ); +@@ -9458,7 +9501,6 @@ + } + arg2 = (unsigned int)(val2); + if (arg1) (arg1)->cav_misses = arg2; +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -9469,10 +9511,10 @@ + SWIGINTERN PyObject *_wrap_avc_cache_stats_cav_misses_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + struct avc_cache_stats *arg1 = (struct avc_cache_stats *) 0 ; +- unsigned int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; ++ unsigned int result; + + if (!PyArg_ParseTuple(args,(char *)"O:avc_cache_stats_cav_misses_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_avc_cache_stats, 0 | 0 ); +@@ -9493,7 +9535,7 @@ struct avc_cache_stats *result = 0 ; if (!PyArg_ParseTuple(args,(char *)":new_avc_cache_stats")) SWIG_fail; @@ -515,7 +2767,15 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_avc_cache_stats, SWIG_POINTER_NEW | 0 ); return resultobj; fail: -@@ -9525,7 +9543,7 @@ +@@ -9515,7 +9557,6 @@ + } + arg1 = (struct avc_cache_stats *)(argp1); + free((char *) arg1); +- + resultobj = SWIG_Py_Void(); + return resultobj; + fail: +@@ -9525,7 +9566,7 @@ SWIGINTERN PyObject *avc_cache_stats_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; @@ -524,7 +2784,150 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel SWIG_TypeNewClientData(SWIGTYPE_p_avc_cache_stats, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } -@@ -10513,7 +10531,7 @@ +@@ -9571,12 +9612,12 @@ + PyObject *resultobj = 0; + char *arg1 = (char *) 0 ; + char **arg2 = (char **) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + char *temp2 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:get_default_type",&obj0)) SWIG_fail; +@@ -9608,7 +9649,6 @@ + char *arg1 = (char *) 0 ; + security_context_t arg2 = (security_context_t) 0 ; + security_context_t **arg3 = (security_context_t **) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -9618,6 +9658,7 @@ + security_context_t *temp3 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + { + arg3 = &temp3; +@@ -9672,7 +9713,6 @@ + char *arg2 = (char *) 0 ; + security_context_t arg3 = (security_context_t) 0 ; + security_context_t **arg4 = (security_context_t **) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -9686,6 +9726,7 @@ + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; ++ int result; + + { + arg4 = &temp4; +@@ -9746,7 +9787,6 @@ + char *arg1 = (char *) 0 ; + security_context_t arg2 = (security_context_t) 0 ; + security_context_t *arg3 = (security_context_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -9756,6 +9796,7 @@ + security_context_t temp3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; ++ int result; + + arg3 = &temp3; + if (!PyArg_ParseTuple(args,(char *)"OO:get_default_context",&obj0,&obj1)) SWIG_fail; +@@ -9795,7 +9836,6 @@ + char *arg2 = (char *) 0 ; + security_context_t arg3 = (security_context_t) 0 ; + security_context_t *arg4 = (security_context_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -9809,6 +9849,7 @@ + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; ++ int result; + + arg4 = &temp4; + if (!PyArg_ParseTuple(args,(char *)"OOO:get_default_context_with_level",&obj0,&obj1,&obj2)) SWIG_fail; +@@ -9855,7 +9896,6 @@ + char *arg2 = (char *) 0 ; + security_context_t arg3 = (security_context_t) 0 ; + security_context_t *arg4 = (security_context_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -9869,6 +9909,7 @@ + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; ++ int result; + + arg4 = &temp4; + if (!PyArg_ParseTuple(args,(char *)"OOO:get_default_context_with_role",&obj0,&obj1,&obj2)) SWIG_fail; +@@ -9916,7 +9957,6 @@ + char *arg3 = (char *) 0 ; + security_context_t arg4 = (security_context_t) 0 ; + security_context_t *arg5 = (security_context_t *) 0 ; +- int result; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; +@@ -9934,6 +9974,7 @@ + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; ++ int result; + + arg5 = &temp5; + if (!PyArg_ParseTuple(args,(char *)"OOOO:get_default_context_with_rolelevel",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; +@@ -9985,9 +10026,9 @@ + 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 = 0 ; + security_context_t temp2 = 0 ; ++ int result; + + arg1 = &temp1; + arg2 = &temp2; +@@ -10020,12 +10061,12 @@ + 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 = 0 ; + PyObject * obj0 = 0 ; ++ int result; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:manual_user_enter_context",&obj0)) SWIG_fail; +@@ -10218,6 +10259,7 @@ + { (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 *)"getseuserbyname", _wrap_getseuserbyname, METH_VARARGS, NULL}, ++ { (char *)"getseuser", _wrap_getseuser, 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}, +@@ -10513,7 +10555,7 @@ SWIG_InitializeModule(void *clientdata) { size_t i; swig_module_info *module_head, *iter; @@ -533,7 +2936,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel clientdata = clientdata; -@@ -10523,6 +10541,9 @@ +@@ -10523,6 +10565,9 @@ swig_module.type_initial = swig_type_initial; swig_module.cast_initial = swig_cast_initial; swig_module.next = &swig_module; @@ -543,7 +2946,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel } /* Try and load any already created modules */ -@@ -10551,6 +10572,12 @@ +@@ -10551,6 +10596,12 @@ module_head->next = &swig_module; } @@ -556,3 +2959,121 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libsel /* Now work on filling in swig_module.types */ #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: size %d\n", swig_module.size); +diff --exclude-from=exclude -N -u -r nsalibselinux/src/seusers.c libselinux-2.0.76/src/seusers.c +--- nsalibselinux/src/seusers.c 2008-08-28 09:34:24.000000000 -0400 ++++ libselinux-2.0.76/src/seusers.c 2008-12-12 10:06:56.000000000 -0500 +@@ -243,3 +243,66 @@ + *r_level = NULL; + return 0; + } ++ ++int getseuser(const char *username, const char *service, ++ char **r_seuser, char **r_level) { ++ int ret = -1; ++ int len = 0; ++ char *seuser = NULL; ++ char *level = NULL; ++ char *buffer = NULL; ++ size_t size = 0; ++ size_t lineno = 0; ++ char *rec = NULL; ++ char *path=NULL; ++ if (asprintf(&path,"%s/logins/%s", selinux_policy_root(), username) < 0) ++ goto err; ++ FILE *fp = fopen(path, "r"); ++ free(path); ++ if (fp == NULL) goto err; ++ __fsetlocking(fp, FSETLOCKING_BYCALLER); ++ while (getline(&buffer, &size, fp) > 0) { ++ ++lineno; ++ ++ if (strncmp(buffer, "*:", 2) == 0) { ++ free(rec); ++ rec = strdup(buffer); ++ continue; ++ } ++ len = strlen(service); ++ if ((strncmp(buffer, service, len) == 0) && ++ (buffer[len] == ':')) { ++ free(rec); ++ rec = strdup(buffer); ++ break; ++ } ++ } ++ ++ if (! rec) goto err; ++ seuser = strchr(rec, ':'); ++ if (! seuser) goto err; ++ ++ seuser++; ++ level = strchr(seuser, ':'); ++ *level = 0; ++ level++; ++ *r_seuser = strdup(seuser); ++ if (! *r_seuser) goto err; ++ ++ len = strlen(level); ++ if (len && level[len-1] == '\n') ++ level[len-1] = 0; ++ ++ *r_level = strdup(level); ++ if (! *r_level) { ++ free(*r_seuser); ++ goto err; ++ } ++ ret = 0; ++ ++ err: ++ free(buffer); ++ fclose(fp); ++ free(rec); ++ return getseuserbyname(username, r_seuser, r_level); ++} +diff --exclude-from=exclude -N -u -r nsalibselinux/utils/getdefaultcon.c libselinux-2.0.76/utils/getdefaultcon.c +--- nsalibselinux/utils/getdefaultcon.c 2008-08-28 09:34:24.000000000 -0400 ++++ libselinux-2.0.76/utils/getdefaultcon.c 2008-12-02 09:33:14.000000000 -0500 +@@ -22,8 +22,9 @@ + security_context_t usercon = NULL, cur_context = NULL; + char *user = NULL, *level = NULL, *role=NULL, *seuser=NULL, *dlevel=NULL; + int ret, opt; ++ int verbose = 0; + +- while ((opt = getopt(argc, argv, "l:r:")) > 0) { ++ while ((opt = getopt(argc, argv, "l:r:v")) > 0) { + switch (opt) { + case 'l': + level = strdup(optarg); +@@ -31,6 +32,9 @@ + case 'r': + role = strdup(optarg); + break; ++ case 'v': ++ verbose = 1; ++ break; + default: + usage(argv[0], "invalid option", 1); + } +@@ -66,9 +70,13 @@ + } + if (ret < 0) + perror(argv[0]); +- else +- printf("%s: %s from %s %s %s %s -> %s\n", argv[0], user, cur_context, seuser, role, level, usercon); +- ++ else { ++ if (verbose) { ++ printf("%s: %s from %s %s %s %s -> %s\n", argv[0], user, cur_context, seuser, role, level, usercon); ++ } else { ++ printf("%s", usercon); ++ } ++ } + + free(role); + free(seuser); +@@ -76,5 +84,5 @@ + free(dlevel); + free(usercon); + +- return 0; ++ return ret >= 0; + } diff --git a/libselinux.spec b/libselinux.spec index bd3891e..8370dc3 100644 --- a/libselinux.spec +++ b/libselinux.spec @@ -5,7 +5,7 @@ Summary: SELinux library and simple utilities Name: libselinux Version: 2.0.76 -Release: 2%{?dist} +Release: 3%{?dist} License: Public Domain Group: System Environment/Libraries Source: http://www.nsa.gov/selinux/archives/%{name}-%{version}.tgz @@ -163,6 +163,11 @@ exit 0 %{ruby_sitearch}/selinux.so %changelog +* Fri Dec 12 2008 Dan Walsh - 2.0.76-3 +- Add new function getseuser which will take username and service and return +- seuser and level. ipa will populate file in future. +- Change selinuxdefcon to return just the context by default + * Sat Nov 29 2008 Ignacio Vazquez-Abrams - 2.0.76-2 - Rebuild for Python 2.6