File PyPAM-0.5.0-nofree.patch of Package python-pam

--- PAMmodule.c
+++ PAMmodule.c
@@ -24,8 +24,6 @@
     char                *service;
     char                *user;
     PyObject            *callback;
-    struct pam_response *response_data;
-    int                 response_len;
     PyObject            *user_data;
     void                *dlh1, *dlh2;
 } PyPAMObject;
@@ -54,15 +52,6 @@
 
     Py_INCREF(self);
 
-    if (NULL != self->response_data) {
-        for (int i = 0; i < self->response_len; i++) {
-            free(self->response_data[0].resp);
-        }
-        free(self->response_data);
-        self->response_data = NULL;
-        self->response_len = 0;
-    }
-
     PyObject* msgList = PyList_New(num_msg);
     
     for (int i = 0; i < num_msg; i++) {
@@ -94,16 +83,12 @@
         if (!PyArg_ParseTuple(respTuple, "si", &resp_text, &resp_retcode)) {
             free(*resp);
             Py_DECREF(respList);
-            return PAM_CONV_ERR;
+            return PAM_CONV_ERR; // FIXME responses filled before the error leak here
         }
         spr->resp = strdup(resp_text);
         spr->resp_retcode = resp_retcode;
     }
     
-    // Save this so we can free it later.
-    self->response_data = *resp;
-    self->response_len = PyList_Size(respList);
-
     Py_DECREF(respList);
     
     return PAM_SUCCESS;
@@ -143,8 +128,6 @@
     p->user = NULL;
     Py_INCREF(Py_None);
     p->callback = Py_None;
-    p->response_data = NULL;
-    p->response_len = 0;
     Py_INCREF(Py_None);
     p->user_data = Py_None;
     
openSUSE Build Service is sponsored by