diff --git a/libselinux-rhat.patch b/libselinux-rhat.patch index 13d9388..94b6762 100644 --- a/libselinux-rhat.patch +++ b/libselinux-rhat.patch @@ -12,7 +12,7 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/include/selinux/av_permission #define KEY__WRITE 0x00000004UL diff --exclude-from=exclude -N -u -r nsalibselinux/src/Makefile libselinux-2.0.46/src/Makefile --- nsalibselinux/src/Makefile 2007-09-26 19:37:45.000000000 -0400 -+++ libselinux-2.0.46/src/Makefile 2008-01-03 15:24:29.000000000 -0500 ++++ libselinux-2.0.46/src/Makefile 2008-01-05 08:19:27.000000000 -0500 @@ -77,14 +77,14 @@ install: all @@ -50,6 +50,428 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/src/matchpathcon.c libselinux va_end(ap); } +diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinux.py libselinux-2.0.46/src/selinux.py +--- nsalibselinux/src/selinux.py 2007-10-05 13:09:54.000000000 -0400 ++++ libselinux-2.0.46/src/selinux.py 2008-01-08 05:00:39.000000000 -0500 +@@ -1,5 +1,5 @@ + # This file was automatically generated by SWIG (http://www.swig.org). +-# Version 1.3.31 ++# Version 1.3.33 + # + # Don't modify this file, modify the SWIG interface instead. + # This file is compatible with both classic and new-style classes. +Binary files nsalibselinux/src/selinux.pyc and libselinux-2.0.46/src/selinux.pyc differ +diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig.i libselinux-2.0.46/src/selinuxswig.i +--- nsalibselinux/src/selinuxswig.i 2007-10-01 09:54:35.000000000 -0400 ++++ libselinux-2.0.46/src/selinuxswig.i 2008-01-08 05:00:22.000000000 -0500 +@@ -10,6 +10,7 @@ + %apply int *OUTPUT { size_t * }; + + %typedef unsigned mode_t; ++%typedef unsigned pid_t; + + %typemap(in, numinputs=0) (char ***names, int *len) (char **temp1, int temp2) { + $1 = &temp1; +diff --exclude-from=exclude -N -u -r nsalibselinux/src/selinuxswig_wrap.c libselinux-2.0.46/src/selinuxswig_wrap.c +--- nsalibselinux/src/selinuxswig_wrap.c 2007-10-05 13:09:54.000000000 -0400 ++++ libselinux-2.0.46/src/selinuxswig_wrap.c 2008-01-08 05:00:39.000000000 -0500 +@@ -1,6 +1,6 @@ + /* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). +- * Version 1.3.31 ++ * Version 1.3.33 + * + * 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 +@@ -17,14 +17,14 @@ + + /* template workaround for compilers that cannot correctly implement the C++ standard */ + #ifndef SWIGTEMPLATEDISAMBIGUATOR +-# if defined(__SUNPRO_CC) +-# if (__SUNPRO_CC <= 0x560) +-# define SWIGTEMPLATEDISAMBIGUATOR template +-# else +-# define SWIGTEMPLATEDISAMBIGUATOR +-# endif ++# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) ++# define SWIGTEMPLATEDISAMBIGUATOR template ++# elif defined(__HP_aCC) ++/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ ++/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ ++# define SWIGTEMPLATEDISAMBIGUATOR template + # else +-# define SWIGTEMPLATEDISAMBIGUATOR ++# define SWIGTEMPLATEDISAMBIGUATOR + # endif + #endif + +@@ -107,6 +107,12 @@ + # define _CRT_SECURE_NO_DEPRECATE + #endif + ++/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ ++#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) ++# define _SCL_SECURE_NO_DEPRECATE ++#endif ++ ++ + + /* Python.h has to appear first */ + #include +@@ -343,7 +349,7 @@ + while ((*f2 == ' ') && (f2 != l2)) ++f2; + if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1; + } +- return (l1 - f1) - (l2 - f2); ++ return (int)((l1 - f1) - (l2 - f2)); + } + + /* +@@ -1090,14 +1096,14 @@ + /* Unpack the argument tuple */ + + SWIGINTERN int +-SWIG_Python_UnpackTuple(PyObject *args, const char *name, int min, int max, PyObject **objs) ++SWIG_Python_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, PyObject **objs) + { + if (!args) { + if (!min && !max) { + return 1; + } else { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got none", +- name, (min == max ? "" : "at least "), min); ++ name, (min == max ? "" : "at least "), (int)min); + return 0; + } + } +@@ -1105,14 +1111,14 @@ + PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple"); + return 0; + } else { +- register int l = PyTuple_GET_SIZE(args); ++ register Py_ssize_t l = PyTuple_GET_SIZE(args); + if (l < min) { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", +- name, (min == max ? "" : "at least "), min, l); ++ name, (min == max ? "" : "at least "), (int)min, (int)l); + return 0; + } else if (l > max) { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", +- name, (min == max ? "" : "at most "), max, l); ++ name, (min == max ? "" : "at most "), (int)max, (int)l); + return 0; + } else { + register int i; +@@ -1591,9 +1597,11 @@ + (unaryfunc)0, /*nb_float*/ + (unaryfunc)PySwigObject_oct, /*nb_oct*/ + (unaryfunc)PySwigObject_hex, /*nb_hex*/ +-#if PY_VERSION_HEX >= 0x02020000 +- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ +-#elif PY_VERSION_HEX >= 0x02000000 ++#if PY_VERSION_HEX >= 0x02050000 /* 2.5.0 */ ++ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */ ++#elif PY_VERSION_HEX >= 0x02020000 /* 2.2.0 */ ++ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ ++#elif PY_VERSION_HEX >= 0x02000000 /* 2.0.0 */ + 0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */ + #endif + }; +@@ -2458,14 +2466,13 @@ + #define SWIGTYPE_p_int swig_types[7] + #define SWIGTYPE_p_p_char swig_types[8] + #define SWIGTYPE_p_p_p_char swig_types[9] +-#define SWIGTYPE_p_pid_t swig_types[10] +-#define SWIGTYPE_p_security_class_mapping swig_types[11] +-#define SWIGTYPE_p_selinux_callback swig_types[12] +-#define SWIGTYPE_p_selinux_opt swig_types[13] +-#define SWIGTYPE_p_unsigned_int swig_types[14] +-#define SWIGTYPE_p_unsigned_short swig_types[15] +-static swig_type_info *swig_types[17]; +-static swig_module_info swig_module = {swig_types, 16, 0, 0, 0, 0}; ++#define SWIGTYPE_p_security_class_mapping swig_types[10] ++#define SWIGTYPE_p_selinux_callback swig_types[11] ++#define SWIGTYPE_p_selinux_opt swig_types[12] ++#define SWIGTYPE_p_unsigned_int swig_types[13] ++#define SWIGTYPE_p_unsigned_short swig_types[14] ++static swig_type_info *swig_types[16]; ++static swig_module_info swig_module = {swig_types, 15, 0, 0, 0, 0}; + #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name) + #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name) + +@@ -2484,7 +2491,7 @@ + + #define SWIG_name "_selinux" + +-#define SWIGVERSION 0x010331 ++#define SWIGVERSION 0x010333 + #define SWIG_VERSION SWIGVERSION + + +@@ -2577,14 +2584,12 @@ + + + #include +-#ifndef LLONG_MIN +-# define LLONG_MIN LONG_LONG_MIN +-#endif +-#ifndef LLONG_MAX +-# define LLONG_MAX LONG_LONG_MAX +-#endif +-#ifndef ULLONG_MAX +-# define ULLONG_MAX ULONG_LONG_MAX ++#if !defined(SWIG_NO_LLONG_MAX) ++# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__) ++# define LLONG_MAX __LONG_LONG_MAX__ ++# define LLONG_MIN (-LLONG_MAX - 1LL) ++# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) ++# endif + #endif + + +@@ -2669,13 +2674,18 @@ + + + SWIGINTERN int +-SWIG_AsVal_long (PyObject *obj, long* val) ++SWIG_AsVal_unsigned_SS_long (PyObject *obj, unsigned long *val) + { + if (PyInt_Check(obj)) { +- if (val) *val = PyInt_AsLong(obj); +- return SWIG_OK; ++ long v = PyInt_AsLong(obj); ++ if (v >= 0) { ++ if (val) *val = v; ++ return SWIG_OK; ++ } else { ++ return SWIG_OverflowError; ++ } + } else if (PyLong_Check(obj)) { +- long v = PyLong_AsLong(obj); ++ unsigned long v = PyLong_AsUnsignedLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; +@@ -2686,7 +2696,7 @@ + #ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; +- long v = PyInt_AsLong(obj); ++ unsigned long v = PyLong_AsUnsignedLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_OK); +@@ -2696,8 +2706,8 @@ + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d)); +- if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { +- if (val) *val = (long)(d); ++ if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) { ++ if (val) *val = (unsigned long)(d); + return res; + } + } +@@ -2708,15 +2718,15 @@ + + + SWIGINTERN int +-SWIG_AsVal_int (PyObject * obj, int *val) ++SWIG_AsVal_unsigned_SS_int (PyObject * obj, unsigned int *val) + { +- long v; +- int res = SWIG_AsVal_long (obj, &v); ++ unsigned long v; ++ int res = SWIG_AsVal_unsigned_SS_long (obj, &v); + if (SWIG_IsOK(res)) { +- if ((v < INT_MIN || v > INT_MAX)) { ++ if ((v > UINT_MAX)) { + return SWIG_OverflowError; + } else { +- if (val) *val = (int)(v); ++ if (val) *val = (unsigned int)(v); + } + } + return res; +@@ -2724,18 +2734,13 @@ + + + SWIGINTERN int +-SWIG_AsVal_unsigned_SS_long (PyObject *obj, unsigned long *val) ++SWIG_AsVal_long (PyObject *obj, long* val) + { + if (PyInt_Check(obj)) { +- long v = PyInt_AsLong(obj); +- if (v >= 0) { +- if (val) *val = v; +- return SWIG_OK; +- } else { +- return SWIG_OverflowError; +- } ++ if (val) *val = PyInt_AsLong(obj); ++ return SWIG_OK; + } else if (PyLong_Check(obj)) { +- unsigned long v = PyLong_AsUnsignedLong(obj); ++ long v = PyLong_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; +@@ -2746,7 +2751,7 @@ + #ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; +- unsigned long v = PyLong_AsUnsignedLong(obj); ++ long v = PyInt_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_OK); +@@ -2756,8 +2761,8 @@ + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d)); +- if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) { +- if (val) *val = (unsigned long)(d); ++ if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { ++ if (val) *val = (long)(d); + return res; + } + } +@@ -2768,15 +2773,15 @@ + + + SWIGINTERN int +-SWIG_AsVal_unsigned_SS_int (PyObject * obj, unsigned int *val) ++SWIG_AsVal_int (PyObject * obj, int *val) + { +- unsigned long v; +- int res = SWIG_AsVal_unsigned_SS_long (obj, &v); ++ long v; ++ int res = SWIG_AsVal_long (obj, &v); + if (SWIG_IsOK(res)) { +- if ((v > UINT_MAX)) { ++ if ((v < INT_MIN || v > INT_MAX)) { + return SWIG_OverflowError; + } else { +- if (val) *val = (unsigned int)(v); ++ if (val) *val = (int)(v); + } + } + return res; +@@ -2986,24 +2991,18 @@ + pid_t arg1 ; + security_context_t *arg2 = (security_context_t *) 0 ; + int result; +- void *argp1 ; +- int res1 = 0 ; ++ unsigned int val1 ; ++ int ecode1 = 0 ; + security_context_t temp2 = 0 ; + PyObject * obj0 = 0 ; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:getpidcon",&obj0)) SWIG_fail; +- { +- res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_pid_t, 0 ); +- if (!SWIG_IsOK(res1)) { +- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "getpidcon" "', argument " "1"" of type '" "pid_t""'"); +- } +- if (!argp1) { +- SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "getpidcon" "', argument " "1"" of type '" "pid_t""'"); +- } else { +- arg1 = *((pid_t *)(argp1)); +- } +- } ++ ecode1 = SWIG_AsVal_unsigned_SS_int(obj0, &val1); ++ if (!SWIG_IsOK(ecode1)) { ++ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "getpidcon" "', argument " "1"" of type '" "pid_t""'"); ++ } ++ arg1 = (pid_t)(val1); + result = (int)getpidcon(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + if (*arg2) { +@@ -3025,24 +3024,18 @@ + pid_t arg1 ; + security_context_t *arg2 = (security_context_t *) 0 ; + int result; +- void *argp1 ; +- int res1 = 0 ; ++ unsigned int val1 ; ++ int ecode1 = 0 ; + security_context_t temp2 = 0 ; + PyObject * obj0 = 0 ; + + arg2 = &temp2; + if (!PyArg_ParseTuple(args,(char *)"O:getpidcon_raw",&obj0)) SWIG_fail; +- { +- res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_pid_t, 0 ); +- if (!SWIG_IsOK(res1)) { +- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "getpidcon_raw" "', argument " "1"" of type '" "pid_t""'"); +- } +- if (!argp1) { +- SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "getpidcon_raw" "', argument " "1"" of type '" "pid_t""'"); +- } else { +- arg1 = *((pid_t *)(argp1)); +- } +- } ++ ecode1 = SWIG_AsVal_unsigned_SS_int(obj0, &val1); ++ if (!SWIG_IsOK(ecode1)) { ++ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "getpidcon_raw" "', argument " "1"" of type '" "pid_t""'"); ++ } ++ arg1 = (pid_t)(val1); + result = (int)getpidcon_raw(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + if (*arg2) { +@@ -8149,7 +8142,7 @@ + /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */ + + static swig_type_info _swigt__p_SELboolean = {"_p_SELboolean", "SELboolean *", 0, 0, (void*)0, 0}; +-static swig_type_info _swigt__p_av_decision = {"_p_av_decision", "struct av_decision *", 0, 0, (void*)0, 0}; ++static swig_type_info _swigt__p_av_decision = {"_p_av_decision", "struct av_decision *|av_decision *", 0, 0, (void*)0, 0}; + static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; + static swig_type_info _swigt__p_f_int_p_q_const__char_v_______int = {"_p_f_int_p_q_const__char_v_______int", "int (*)(int,char const *,...)", 0, 0, (void*)0, 0}; + static swig_type_info _swigt__p_f_p_p_char__int = {"_p_f_p_p_char__int", "int (*)(char **)|int (*)(security_context_t *)", 0, 0, (void*)0, 0}; +@@ -8158,12 +8151,11 @@ + static swig_type_info _swigt__p_int = {"_p_int", "int *", 0, 0, (void*)0, 0}; + static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **|security_context_t *", 0, 0, (void*)0, 0}; + static swig_type_info _swigt__p_p_p_char = {"_p_p_p_char", "char ***|security_context_t **", 0, 0, (void*)0, 0}; +-static swig_type_info _swigt__p_pid_t = {"_p_pid_t", "pid_t *", 0, 0, (void*)0, 0}; +-static swig_type_info _swigt__p_security_class_mapping = {"_p_security_class_mapping", "struct security_class_mapping *", 0, 0, (void*)0, 0}; +-static swig_type_info _swigt__p_selinux_callback = {"_p_selinux_callback", "union selinux_callback *", 0, 0, (void*)0, 0}; +-static swig_type_info _swigt__p_selinux_opt = {"_p_selinux_opt", "selinux_opt *", 0, 0, (void*)0, 0}; +-static swig_type_info _swigt__p_unsigned_int = {"_p_unsigned_int", "unsigned int *|access_vector_t *", 0, 0, (void*)0, 0}; +-static swig_type_info _swigt__p_unsigned_short = {"_p_unsigned_short", "unsigned short *|security_class_t *", 0, 0, (void*)0, 0}; ++static swig_type_info _swigt__p_security_class_mapping = {"_p_security_class_mapping", "struct security_class_mapping *|security_class_mapping *", 0, 0, (void*)0, 0}; ++static swig_type_info _swigt__p_selinux_callback = {"_p_selinux_callback", "union selinux_callback *|selinux_callback *", 0, 0, (void*)0, 0}; ++static swig_type_info _swigt__p_selinux_opt = {"_p_selinux_opt", "struct selinux_opt *|selinux_opt *", 0, 0, (void*)0, 0}; ++static swig_type_info _swigt__p_unsigned_int = {"_p_unsigned_int", "unsigned int *|access_vector_t *|mode_t *|pid_t *", 0, 0, (void*)0, 0}; ++static swig_type_info _swigt__p_unsigned_short = {"_p_unsigned_short", "security_class_t *|unsigned short *", 0, 0, (void*)0, 0}; + + static swig_type_info *swig_type_initial[] = { + &_swigt__p_SELboolean, +@@ -8176,7 +8168,6 @@ + &_swigt__p_int, + &_swigt__p_p_char, + &_swigt__p_p_p_char, +- &_swigt__p_pid_t, + &_swigt__p_security_class_mapping, + &_swigt__p_selinux_callback, + &_swigt__p_selinux_opt, +@@ -8194,7 +8185,6 @@ + static swig_cast_info _swigc__p_int[] = { {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}}; + static swig_cast_info _swigc__p_p_char[] = { {&_swigt__p_p_char, 0, 0, 0},{0, 0, 0, 0}}; + static swig_cast_info _swigc__p_p_p_char[] = { {&_swigt__p_p_p_char, 0, 0, 0},{0, 0, 0, 0}}; +-static swig_cast_info _swigc__p_pid_t[] = { {&_swigt__p_pid_t, 0, 0, 0},{0, 0, 0, 0}}; + static swig_cast_info _swigc__p_security_class_mapping[] = { {&_swigt__p_security_class_mapping, 0, 0, 0},{0, 0, 0, 0}}; + static swig_cast_info _swigc__p_selinux_callback[] = { {&_swigt__p_selinux_callback, 0, 0, 0},{0, 0, 0, 0}}; + static swig_cast_info _swigc__p_selinux_opt[] = { {&_swigt__p_selinux_opt, 0, 0, 0},{0, 0, 0, 0}}; +@@ -8212,7 +8202,6 @@ + _swigc__p_int, + _swigc__p_p_char, + _swigc__p_p_p_char, +- _swigc__p_pid_t, + _swigc__p_security_class_mapping, + _swigc__p_selinux_callback, + _swigc__p_selinux_opt, diff --exclude-from=exclude -N -u -r nsalibselinux/utils/matchpathcon.c libselinux-2.0.46/utils/matchpathcon.c --- nsalibselinux/utils/matchpathcon.c 2007-07-16 14:20:45.000000000 -0400 +++ libselinux-2.0.46/utils/matchpathcon.c 2008-01-03 15:23:32.000000000 -0500 @@ -79,3 +501,3402 @@ diff --exclude-from=exclude -N -u -r nsalibselinux/utils/matchpathcon.c libselin if (rc < 0) { fprintf(stderr, "matchpathcon(%s) failed: %s\n", path, strerror(errno)); +