diff -up libselinux-2.1.10/src/audit2why.c~ libselinux-2.1.10/src/audit2why.c
--- libselinux-2.1.10/src/audit2why.c~ 2012-10-16 13:10:49.836777130 -0400
+++ libselinux-2.1.10/src/audit2why.c 2012-10-16 13:12:44.211844593 -0400
@@ -164,6 +164,9 @@ static PyObject *finish(PyObject *self _
if (PyArg_ParseTuple(args,(char *)":finish")) {
int i = 0;
+ if (! avc)
+ Py_RETURN_NONE;
+
for (i = 0; i < boolcnt; i++) {
free(boollist[i]->name);
free(boollist[i]);
@@ -288,6 +291,10 @@ static int __policy_init(const char *ini
static PyObject *init(PyObject *self __attribute__((unused)), PyObject *args) {
int result;
char *init_path=NULL;
+ if (avc) {
+ PyErr_SetString( PyExc_RuntimeError, "init called multiple times");
+ return NULL;
+ }
if (!PyArg_ParseTuple(args,(char *)"|s:policy_init",&init_path))
return NULL;
result = __policy_init(init_path);