diff --git a/libselinux-rhat.patch b/libselinux-rhat.patch index a7e4ce4..a75befa 100644 --- a/libselinux-rhat.patch +++ b/libselinux-rhat.patch @@ -1,30 +1,770 @@ -diff --exclude-from=exclude -N -u -r nsalibselinux/man/man8/getsebool.8 libselinux-1.27.25/man/man8/getsebool.8 ---- nsalibselinux/man/man8/getsebool.8 2005-11-16 21:39:52.000000000 -0500 -+++ libselinux-1.27.25/man/man8/getsebool.8 2005-11-29 14:19:22.000000000 -0500 -@@ -9,7 +9,7 @@ - .SH "DESCRIPTION" - .B getsebool - reports where a particular SELinux boolean or --all SELinux booleans are active or inactive. -+all SELinux booleans are on or off - In certain situations a boolean can be in one state with a pending - change to the other state. getsebool will report this as a pending change. - The pending value indicates -diff --exclude-from=exclude -N -u -r nsalibselinux/utils/getsebool.c libselinux-1.27.25/utils/getsebool.c ---- nsalibselinux/utils/getsebool.c 2004-11-30 15:56:56.000000000 -0500 -+++ libselinux-1.27.25/utils/getsebool.c 2005-11-29 14:09:58.000000000 -0500 -@@ -85,11 +85,11 @@ - } - if (pending != active) { - printf("%s --> %s pending: %s\n", names[i], -- ( active ? "active" : "inactive"), -- ( pending ? "active" : "inactive")); -+ ( active ? "on" : "off"), -+ ( pending ? "on" : "off")); - } else { - printf("%s --> %s\n", names[i], -- ( active ? "active" : "inactive")); -+ ( active ? "on" : "off")); - } - } +diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinux.py libselinux-1.27.28/src/selinux.py +--- nsalibselinux/src/selinux.py 2005-11-28 14:10:10.000000000 -0500 ++++ libselinux-1.27.28/src/selinux.py 2005-12-07 09:00:01.000000000 -0500 +@@ -87,8 +87,6 @@ + security_setenforce = _selinux.security_setenforce + +-security_disable = _selinux.security_disable +- + security_policyvers = _selinux.security_policyvers + + security_get_boolean_names = _selinux.security_get_boolean_names +diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig.i libselinux-1.27.28/src/selinuxswig.i +--- nsalibselinux/src/selinuxswig.i 2005-11-28 14:10:10.000000000 -0500 ++++ libselinux-1.27.28/src/selinuxswig.i 2005-12-07 08:59:48.000000000 -0500 +@@ -22,6 +22,15 @@ + %{ + #include "selinux/selinux.h" + %} ++%apply int *OUTPUT { int * }; ++%apply int *OUTPUT { size_t * }; ++ ++%typemap(in, numinputs=0) security_context_t *(security_context_t temp) { ++ $1 = &temp; ++} ++%typemap(argout) security_context_t * { ++ $result = t_output_helper($result, PyString_FromString(*$1)); ++} + + extern int is_selinux_enabled(void); + extern int is_selinux_mls_enabled(void); +@@ -51,7 +60,6 @@ + security_context_t *canoncon); + extern int security_getenforce(void); + extern int security_setenforce(int value); +-extern int security_disable(void); + extern int security_policyvers(void); + extern int security_get_boolean_names(char ***names, int *len); + extern int security_get_boolean_pending(const char *name); +@@ -96,10 +104,16 @@ + + extern int is_context_customizable (security_context_t scontext); + +-extern int selinux_trans_to_raw_context(security_context_t trans, ++extern int selinux_trans_to_raw_context(char *trans, + security_context_t *rawp); +-extern int selinux_raw_to_trans_context(security_context_t raw, ++extern int selinux_raw_to_trans_context(char *raw, + security_context_t *transp); + ++%typemap(in, numinputs=0) char **(char *temp) { ++ $1 = &temp; ++} ++ ++%typemap(argout) char ** { ++ $result = t_output_helper($result, PyString_FromString(*$1)); ++} + extern int getseuserbyname(const char *linuxuser, char **seuser, char **level); +- +diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libselinux-1.27.28/src/selinuxswig_wrap.c +--- nsalibselinux/src/selinuxswig_wrap.c 2005-11-28 14:10:10.000000000 -0500 ++++ libselinux-1.27.28/src/selinuxswig_wrap.c 2005-12-07 09:00:01.000000000 -0500 +@@ -1515,6 +1515,26 @@ + int getpeercon(int,security_context_t *); + int selinux_mkload_policy(int); + int selinux_init_load_policy(int *); ++ ++SWIGINTERN PyObject* ++t_output_helper(PyObject* target, PyObject* o) { ++ if (!target) { ++ target = o; ++ } else if (target == Py_None) { ++ Py_DECREF(target); ++ target = o; ++ } else { ++ if (!PyList_Check(target)) { ++ PyObject *o2 = target; ++ target = PyList_New(1); ++ PyList_SetItem(target, 0, o2); ++ } ++ PyList_Append(target,o); ++ } ++ return target; ++} ++ ++ + int security_set_boolean_list(size_t,SELboolean *,int); + + SWIGINTERN int +@@ -1569,7 +1589,6 @@ + int security_canonicalize_context(security_context_t,security_context_t *); + int security_getenforce(void); + int security_setenforce(int); +-int security_disable(void); + int security_policyvers(void); + int security_get_boolean_names(char ***,int *); + int security_get_boolean_pending(char const *); +@@ -1688,8 +1707,8 @@ + int checkPasswdAccess(access_vector_t); + int rpm_execcon(unsigned int,char const *,char *const [],char *const []); + int is_context_customizable(security_context_t); +-int selinux_trans_to_raw_context(security_context_t,security_context_t *); +-int selinux_raw_to_trans_context(security_context_t,security_context_t *); ++int selinux_trans_to_raw_context(char *,security_context_t *); ++int selinux_raw_to_trans_context(char *,security_context_t *); + int getseuserbyname(char const *,char **,char **); + #ifdef __cplusplus + extern "C" { +@@ -1730,16 +1749,20 @@ + PyObject *resultobj; + security_context_t *arg1 = (security_context_t *) 0 ; + int result; +- PyObject * obj0 = 0 ; ++ security_context_t temp1 ; + +- if(!PyArg_ParseTuple(args,(char *)"O:getcon",&obj0)) goto fail; +- SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(1)) SWIG_fail; ++ { ++ arg1 = &temp1; ++ } ++ if(!PyArg_ParseTuple(args,(char *)":getcon")) goto fail; + result = (int)getcon(arg1); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ { ++ resultobj = t_output_helper(resultobj, PyString_FromString(*arg1)); ++ } + return resultobj; + fail: + return NULL; +@@ -1779,10 +1802,13 @@ + pid_t arg1 ; + security_context_t *arg2 = (security_context_t *) 0 ; + int result; ++ security_context_t temp2 ; + PyObject * obj0 = 0 ; +- PyObject * obj1 = 0 ; + +- if(!PyArg_ParseTuple(args,(char *)"OO:getpidcon",&obj0,&obj1)) goto fail; ++ { ++ arg2 = &temp2; ++ } ++ if(!PyArg_ParseTuple(args,(char *)"O:getpidcon",&obj0)) goto fail; + { + pid_t * argp; + SWIG_Python_ConvertPtr(obj0, (void **)&argp, SWIGTYPE_p_pid_t, SWIG_POINTER_EXCEPTION); +@@ -1793,13 +1819,14 @@ + if (SWIG_arg_fail(1)) SWIG_fail; + arg1 = *argp; + } +- SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(2)) SWIG_fail; + result = (int)getpidcon(arg1,arg2); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ { ++ resultobj = t_output_helper(resultobj, PyString_FromString(*arg2)); ++ } + return resultobj; + fail: + return NULL; +@@ -1810,16 +1837,20 @@ + PyObject *resultobj; + security_context_t *arg1 = (security_context_t *) 0 ; + int result; +- PyObject * obj0 = 0 ; ++ security_context_t temp1 ; + +- if(!PyArg_ParseTuple(args,(char *)"O:getprevcon",&obj0)) goto fail; +- SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(1)) SWIG_fail; ++ { ++ arg1 = &temp1; ++ } ++ if(!PyArg_ParseTuple(args,(char *)":getprevcon")) goto fail; + result = (int)getprevcon(arg1); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ { ++ resultobj = t_output_helper(resultobj, PyString_FromString(*arg1)); ++ } + return resultobj; + fail: + return NULL; +@@ -1830,16 +1861,20 @@ + PyObject *resultobj; + security_context_t *arg1 = (security_context_t *) 0 ; + int result; +- PyObject * obj0 = 0 ; ++ security_context_t temp1 ; + +- if(!PyArg_ParseTuple(args,(char *)"O:getexeccon",&obj0)) goto fail; +- SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(1)) SWIG_fail; ++ { ++ arg1 = &temp1; ++ } ++ if(!PyArg_ParseTuple(args,(char *)":getexeccon")) goto fail; + result = (int)getexeccon(arg1); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ { ++ resultobj = t_output_helper(resultobj, PyString_FromString(*arg1)); ++ } + return resultobj; + fail: + return NULL; +@@ -1878,16 +1913,20 @@ + PyObject *resultobj; + security_context_t *arg1 = (security_context_t *) 0 ; + int result; +- PyObject * obj0 = 0 ; ++ security_context_t temp1 ; + +- if(!PyArg_ParseTuple(args,(char *)"O:getfscreatecon",&obj0)) goto fail; +- SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(1)) SWIG_fail; ++ { ++ arg1 = &temp1; ++ } ++ if(!PyArg_ParseTuple(args,(char *)":getfscreatecon")) goto fail; + result = (int)getfscreatecon(arg1); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ { ++ resultobj = t_output_helper(resultobj, PyString_FromString(*arg1)); ++ } + return resultobj; + fail: + return NULL; +@@ -1927,20 +1966,24 @@ + char *arg1 = (char *) 0 ; + security_context_t *arg2 = (security_context_t *) 0 ; + int result; ++ security_context_t temp2 ; + PyObject * obj0 = 0 ; +- PyObject * obj1 = 0 ; + +- if(!PyArg_ParseTuple(args,(char *)"OO:getfilecon",&obj0,&obj1)) goto fail; ++ { ++ arg2 = &temp2; ++ } ++ if(!PyArg_ParseTuple(args,(char *)"O:getfilecon",&obj0)) goto fail; + if (!SWIG_AsCharPtr(obj0, (char**)&arg1)) { + SWIG_arg_fail(1);SWIG_fail; + } +- SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(2)) SWIG_fail; + result = (int)getfilecon((char const *)arg1,arg2); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ { ++ resultobj = t_output_helper(resultobj, PyString_FromString(*arg2)); ++ } + return resultobj; + fail: + return NULL; +@@ -1952,20 +1995,24 @@ + char *arg1 = (char *) 0 ; + security_context_t *arg2 = (security_context_t *) 0 ; + int result; ++ security_context_t temp2 ; + PyObject * obj0 = 0 ; +- PyObject * obj1 = 0 ; + +- if(!PyArg_ParseTuple(args,(char *)"OO:lgetfilecon",&obj0,&obj1)) goto fail; ++ { ++ arg2 = &temp2; ++ } ++ if(!PyArg_ParseTuple(args,(char *)"O:lgetfilecon",&obj0)) goto fail; + if (!SWIG_AsCharPtr(obj0, (char**)&arg1)) { + SWIG_arg_fail(1);SWIG_fail; + } +- SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(2)) SWIG_fail; + result = (int)lgetfilecon((char const *)arg1,arg2); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ { ++ resultobj = t_output_helper(resultobj, PyString_FromString(*arg2)); ++ } + return resultobj; + fail: + return NULL; +@@ -1977,21 +2024,25 @@ + int arg1 ; + security_context_t *arg2 = (security_context_t *) 0 ; + int result; ++ security_context_t temp2 ; + PyObject * obj0 = 0 ; +- PyObject * obj1 = 0 ; + +- if(!PyArg_ParseTuple(args,(char *)"OO:fgetfilecon",&obj0,&obj1)) goto fail; ++ { ++ arg2 = &temp2; ++ } ++ if(!PyArg_ParseTuple(args,(char *)"O:fgetfilecon",&obj0)) goto fail; + { + arg1 = (int)(SWIG_As_int(obj0)); + if (SWIG_arg_fail(1)) SWIG_fail; + } +- SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(2)) SWIG_fail; + result = (int)fgetfilecon(arg1,arg2); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ { ++ resultobj = t_output_helper(resultobj, PyString_FromString(*arg2)); ++ } + return resultobj; + fail: + return NULL; +@@ -2103,21 +2154,25 @@ + int arg1 ; + security_context_t *arg2 = (security_context_t *) 0 ; + int result; ++ security_context_t temp2 ; + PyObject * obj0 = 0 ; +- PyObject * obj1 = 0 ; + +- if(!PyArg_ParseTuple(args,(char *)"OO:getpeercon",&obj0,&obj1)) goto fail; ++ { ++ arg2 = &temp2; ++ } ++ if(!PyArg_ParseTuple(args,(char *)"O:getpeercon",&obj0)) goto fail; + { + arg1 = (int)(SWIG_As_int(obj0)); + if (SWIG_arg_fail(1)) SWIG_fail; + } +- SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(2)) SWIG_fail; + result = (int)getpeercon(arg1,arg2); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ { ++ resultobj = t_output_helper(resultobj, PyString_FromString(*arg2)); ++ } + return resultobj; + fail: + return NULL; +@@ -2150,16 +2205,18 @@ + PyObject *resultobj; + int *arg1 = (int *) 0 ; + int result; +- PyObject * obj0 = 0 ; ++ int temp1 ; ++ int res1 = 0 ; + +- if(!PyArg_ParseTuple(args,(char *)"O:selinux_init_load_policy",&obj0)) goto fail; +- SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_int, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(1)) SWIG_fail; ++ arg1 = &temp1; res1 = SWIG_NEWOBJ; ++ if(!PyArg_ParseTuple(args,(char *)":selinux_init_load_policy")) goto fail; + result = (int)selinux_init_load_policy(arg1); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ resultobj = t_output_helper(resultobj, ((res1 == SWIG_NEWOBJ) ? ++ SWIG_From_int((*arg1)) : SWIG_NewPointerObj((void*)(arg1), SWIGTYPE_p_int, 0))); + return resultobj; + fail: + return NULL; +@@ -2252,10 +2309,13 @@ + security_context_t arg1 ; + security_context_t *arg2 = (security_context_t *) 0 ; + int result; ++ security_context_t temp2 ; + PyObject * obj0 = 0 ; +- PyObject * obj1 = 0 ; + +- if(!PyArg_ParseTuple(args,(char *)"OO:security_canonicalize_context",&obj0,&obj1)) goto fail; ++ { ++ arg2 = &temp2; ++ } ++ if(!PyArg_ParseTuple(args,(char *)"O:security_canonicalize_context",&obj0)) goto fail; + { + security_context_t * argp; + SWIG_Python_ConvertPtr(obj0, (void **)&argp, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION); +@@ -2266,13 +2326,14 @@ + if (SWIG_arg_fail(1)) SWIG_fail; + arg1 = *argp; + } +- SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(2)) SWIG_fail; + result = (int)security_canonicalize_context(arg1,arg2); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ { ++ resultobj = t_output_helper(resultobj, PyString_FromString(*arg2)); ++ } + return resultobj; + fail: + return NULL; +@@ -2317,22 +2378,6 @@ + } + + +-static PyObject *_wrap_security_disable(PyObject *self, PyObject *args) { +- PyObject *resultobj; +- int result; +- +- if(!PyArg_ParseTuple(args,(char *)":security_disable")) goto fail; +- result = (int)security_disable(); +- +- { +- resultobj = SWIG_From_int((int)(result)); +- } +- return resultobj; +- fail: +- return NULL; +-} +- +- + static PyObject *_wrap_security_policyvers(PyObject *self, PyObject *args) { + PyObject *resultobj; + int result; +@@ -2354,19 +2399,21 @@ + char ***arg1 = (char ***) 0 ; + int *arg2 = (int *) 0 ; + int result; ++ int temp2 ; ++ int res2 = 0 ; + PyObject * obj0 = 0 ; +- PyObject * obj1 = 0 ; + +- if(!PyArg_ParseTuple(args,(char *)"OO:security_get_boolean_names",&obj0,&obj1)) goto fail; ++ arg2 = &temp2; res2 = SWIG_NEWOBJ; ++ if(!PyArg_ParseTuple(args,(char *)"O:security_get_boolean_names",&obj0)) goto fail; + SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_p_p_char, SWIG_POINTER_EXCEPTION | 0); + if (SWIG_arg_fail(1)) SWIG_fail; +- SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_int, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(2)) SWIG_fail; + result = (int)security_get_boolean_names(arg1,arg2); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ resultobj = t_output_helper(resultobj, ((res2 == SWIG_NEWOBJ) ? ++ SWIG_From_int((*arg2)) : SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_int, 0))); + return resultobj; + fail: + return NULL; +@@ -2504,11 +2551,14 @@ + mode_t arg2 ; + security_context_t *arg3 = (security_context_t *) 0 ; + int result; ++ security_context_t temp3 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; +- PyObject * obj2 = 0 ; + +- if(!PyArg_ParseTuple(args,(char *)"OOO:matchpathcon",&obj0,&obj1,&obj2)) goto fail; ++ { ++ arg3 = &temp3; ++ } ++ if(!PyArg_ParseTuple(args,(char *)"OO:matchpathcon",&obj0,&obj1)) goto fail; + if (!SWIG_AsCharPtr(obj0, (char**)&arg1)) { + SWIG_arg_fail(1);SWIG_fail; + } +@@ -2522,13 +2572,14 @@ + if (SWIG_arg_fail(2)) SWIG_fail; + arg2 = *argp; + } +- SWIG_Python_ConvertPtr(obj2, (void **)&arg3, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(3)) SWIG_fail; + result = (int)matchpathcon((char const *)arg1,arg2,arg3); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ { ++ resultobj = t_output_helper(resultobj, PyString_FromString(*arg3)); ++ } + return resultobj; + fail: + return NULL; +@@ -2540,20 +2591,24 @@ + char *arg1 = (char *) 0 ; + security_context_t *arg2 = (security_context_t *) 0 ; + int result; ++ security_context_t temp2 ; + PyObject * obj0 = 0 ; +- PyObject * obj1 = 0 ; + +- if(!PyArg_ParseTuple(args,(char *)"OO:matchmediacon",&obj0,&obj1)) goto fail; ++ { ++ arg2 = &temp2; ++ } ++ if(!PyArg_ParseTuple(args,(char *)"O:matchmediacon",&obj0)) goto fail; + if (!SWIG_AsCharPtr(obj0, (char**)&arg1)) { + SWIG_arg_fail(1);SWIG_fail; + } +- SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(2)) SWIG_fail; + result = (int)matchmediacon((char const *)arg1,arg2); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ { ++ resultobj = t_output_helper(resultobj, PyString_FromString(*arg2)); ++ } + return resultobj; + fail: + return NULL; +@@ -2564,16 +2619,18 @@ + PyObject *resultobj; + int *arg1 = (int *) 0 ; + int result; +- PyObject * obj0 = 0 ; ++ int temp1 ; ++ int res1 = 0 ; + +- if(!PyArg_ParseTuple(args,(char *)"O:selinux_getenforcemode",&obj0)) goto fail; +- SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_int, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(1)) SWIG_fail; ++ arg1 = &temp1; res1 = SWIG_NEWOBJ; ++ if(!PyArg_ParseTuple(args,(char *)":selinux_getenforcemode")) goto fail; + result = (int)selinux_getenforcemode(arg1); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ resultobj = t_output_helper(resultobj, ((res1 == SWIG_NEWOBJ) ? ++ SWIG_From_int((*arg1)) : SWIG_NewPointerObj((void*)(arg1), SWIGTYPE_p_int, 0))); + return resultobj; + fail: + return NULL; +@@ -2925,30 +2982,27 @@ + + static PyObject *_wrap_selinux_trans_to_raw_context(PyObject *self, PyObject *args) { + PyObject *resultobj; +- security_context_t arg1 ; ++ char *arg1 = (char *) 0 ; + security_context_t *arg2 = (security_context_t *) 0 ; + int result; ++ security_context_t temp2 ; + PyObject * obj0 = 0 ; +- PyObject * obj1 = 0 ; + +- if(!PyArg_ParseTuple(args,(char *)"OO:selinux_trans_to_raw_context",&obj0,&obj1)) goto fail; + { +- security_context_t * argp; +- SWIG_Python_ConvertPtr(obj0, (void **)&argp, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION); +- if (SWIG_arg_fail(1)) SWIG_fail; +- if (argp == NULL) { +- SWIG_null_ref("security_context_t"); +- } +- if (SWIG_arg_fail(1)) SWIG_fail; +- arg1 = *argp; ++ arg2 = &temp2; ++ } ++ if(!PyArg_ParseTuple(args,(char *)"O:selinux_trans_to_raw_context",&obj0)) goto fail; ++ if (!SWIG_AsCharPtr(obj0, (char**)&arg1)) { ++ SWIG_arg_fail(1);SWIG_fail; + } +- SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(2)) SWIG_fail; + result = (int)selinux_trans_to_raw_context(arg1,arg2); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ { ++ resultobj = t_output_helper(resultobj, PyString_FromString(*arg2)); ++ } + return resultobj; + fail: + return NULL; +@@ -2957,30 +3011,27 @@ + + static PyObject *_wrap_selinux_raw_to_trans_context(PyObject *self, PyObject *args) { + PyObject *resultobj; +- security_context_t arg1 ; ++ char *arg1 = (char *) 0 ; + security_context_t *arg2 = (security_context_t *) 0 ; + int result; ++ security_context_t temp2 ; + PyObject * obj0 = 0 ; +- PyObject * obj1 = 0 ; + +- if(!PyArg_ParseTuple(args,(char *)"OO:selinux_raw_to_trans_context",&obj0,&obj1)) goto fail; + { +- security_context_t * argp; +- SWIG_Python_ConvertPtr(obj0, (void **)&argp, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION); +- if (SWIG_arg_fail(1)) SWIG_fail; +- if (argp == NULL) { +- SWIG_null_ref("security_context_t"); +- } +- if (SWIG_arg_fail(1)) SWIG_fail; +- arg1 = *argp; ++ arg2 = &temp2; ++ } ++ if(!PyArg_ParseTuple(args,(char *)"O:selinux_raw_to_trans_context",&obj0)) goto fail; ++ if (!SWIG_AsCharPtr(obj0, (char**)&arg1)) { ++ SWIG_arg_fail(1);SWIG_fail; + } +- SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_security_context_t, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(2)) SWIG_fail; + result = (int)selinux_raw_to_trans_context(arg1,arg2); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ { ++ resultobj = t_output_helper(resultobj, PyString_FromString(*arg2)); ++ } + return resultobj; + fail: + return NULL; +@@ -2993,23 +3044,31 @@ + char **arg2 = (char **) 0 ; + char **arg3 = (char **) 0 ; + int result; ++ char *temp2 ; ++ char *temp3 ; + PyObject * obj0 = 0 ; +- PyObject * obj1 = 0 ; +- PyObject * obj2 = 0 ; + +- if(!PyArg_ParseTuple(args,(char *)"OOO:getseuserbyname",&obj0,&obj1,&obj2)) goto fail; ++ { ++ arg2 = &temp2; ++ } ++ { ++ arg3 = &temp3; ++ } ++ if(!PyArg_ParseTuple(args,(char *)"O:getseuserbyname",&obj0)) goto fail; + if (!SWIG_AsCharPtr(obj0, (char**)&arg1)) { + SWIG_arg_fail(1);SWIG_fail; + } +- SWIG_Python_ConvertPtr(obj1, (void **)&arg2, SWIGTYPE_p_p_char, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(2)) SWIG_fail; +- SWIG_Python_ConvertPtr(obj2, (void **)&arg3, SWIGTYPE_p_p_char, SWIG_POINTER_EXCEPTION | 0); +- if (SWIG_arg_fail(3)) SWIG_fail; + result = (int)getseuserbyname((char const *)arg1,arg2,arg3); + + { + resultobj = SWIG_From_int((int)(result)); + } ++ { ++ resultobj = t_output_helper(resultobj, PyString_FromString(*arg2)); ++ } ++ { ++ resultobj = t_output_helper(resultobj, PyString_FromString(*arg3)); ++ } + return resultobj; + fail: + return NULL; +@@ -3042,7 +3101,6 @@ + { (char *)"security_canonicalize_context", _wrap_security_canonicalize_context, METH_VARARGS, NULL}, + { (char *)"security_getenforce", _wrap_security_getenforce, METH_VARARGS, NULL}, + { (char *)"security_setenforce", _wrap_security_setenforce, METH_VARARGS, NULL}, +- { (char *)"security_disable", _wrap_security_disable, METH_VARARGS, NULL}, + { (char *)"security_policyvers", _wrap_security_policyvers, METH_VARARGS, NULL}, + { (char *)"security_get_boolean_names", _wrap_security_get_boolean_names, METH_VARARGS, NULL}, + { (char *)"security_get_boolean_pending", _wrap_security_get_boolean_pending, METH_VARARGS, NULL}, +diff --exclude-from=exclude -N -u -r nsalibselinux/utils/getseuser.c libselinux-1.27.28/utils/getseuser.c +--- nsalibselinux/utils/getseuser.c 1969-12-31 19:00:00.000000000 -0500 ++++ libselinux-1.27.28/utils/getseuser.c 2005-12-07 08:58:59.000000000 -0500 +@@ -0,0 +1,27 @@ ++#include ++#include ++#include ++#include ++ ++int main(int argc, char **argv) ++{ ++ char *seuser, *range; ++ int rc, i; ++ ++ if (argc < 2) { ++ fprintf(stderr, "usage: %s path...\n", argv[0]); ++ exit(1); ++ } ++ ++ for (i = 1; i < argc; i++) { ++ rc = getseuserbyname(argv[i], &seuser, &range); ++ if (rc < 0) { ++ fprintf(stderr, "%s: getseuserbyname(%s) failed\n", argv[0], argv[i]); ++ exit(2); ++ } ++ printf("%s\t%s\t%s\n", argv[i], seuser, range); ++ freecon(seuser); ++ freecon(range); ++ } ++ exit(0); ++} +diff --exclude-from=exclude -N -u -r nsalibselinux/utils/setrans.c libselinux-1.27.28/utils/setrans.c +--- nsalibselinux/utils/setrans.c 1969-12-31 19:00:00.000000000 -0500 ++++ libselinux-1.27.28/utils/setrans.c 2005-12-07 08:58:59.000000000 -0500 +@@ -0,0 +1,26 @@ ++#include ++#include ++#include ++#include ++ ++int main(int argc, char **argv) ++{ ++ char *buf; ++ int rc, i; ++ ++ if (argc < 2) { ++ fprintf(stderr, "usage: %s context...\n", argv[0]); ++ exit(1); ++ } ++ ++ for (i = 1; i < argc; i++) { ++ rc = selinux_raw_to_trans_context(argv[i], &buf); ++ if (rc < 0) { ++ fprintf(stderr, "%s: selinux_raw_to_trans_context(%s) failed\n", argv[0], argv[i]); ++ exit(2); ++ } ++ printf("%s\t%s\t%s\n", argv[i], buf); ++ freecon(buf); ++ } ++ exit(0); ++} +diff --exclude-from=exclude -N -u -r nsalibselinux/utils/seuntrans.c libselinux-1.27.28/utils/seuntrans.c +--- nsalibselinux/utils/seuntrans.c 1969-12-31 19:00:00.000000000 -0500 ++++ libselinux-1.27.28/utils/seuntrans.c 2005-12-07 08:58:59.000000000 -0500 +@@ -0,0 +1,26 @@ ++#include ++#include ++#include ++#include ++ ++int main(int argc, char **argv) ++{ ++ char *buf; ++ int rc, i; ++ ++ if (argc < 2) { ++ fprintf(stderr, "usage: %s path...\n", argv[0]); ++ exit(1); ++ } ++ ++ for (i = 1; i < argc; i++) { ++ rc = selinux_trans_to_raw_context(argv[i], &buf); ++ if (rc < 0) { ++ fprintf(stderr, "%s: selinux_trans_to_raw_context(%s) failed\n", argv[0], argv[i]); ++ exit(2); ++ } ++ printf("%s\t%s\t%s\n", argv[i], buf); ++ freecon(buf); ++ } ++ exit(0); ++} diff --git a/libselinux.spec b/libselinux.spec index e70f079..c519c96 100644 --- a/libselinux.spec +++ b/libselinux.spec @@ -2,10 +2,11 @@ Summary: SELinux library and simple utilities Name: libselinux Version: 1.27.28 -Release: 1 +Release: 2 License: Public domain (uncopyrighted) Group: System Environment/Libraries Source: http://www.nsa.gov/selinux/archives/%{name}-%{version}.tgz +Patch: libselinux-rhat.patch Requires: libsepol >= %{libsepolver} Requires: libsetrans @@ -47,6 +48,7 @@ needed for developing SELinux applications. %prep %setup -q +%patch -p1 -b .rhat %build make CFLAGS="-g %{optflags}" @@ -104,6 +106,9 @@ exit 0 %{_libdir}/python2.4/site-packages/selinux.py* %changelog +* Wed Dec 6 2005 Dan Walsh 1.27.28-2 +- Fix some of the python swig objects + * Thu Dec 1 2005 Dan Walsh 1.27.28-1 - Update to latest from NSA * Added MATCHPATHCON_VALIDATE flag for set_matchpathcon_flags() and