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;