diff options
Diffstat (limited to 'testing/py3-pam/PyPAM-0.5.0-memory-errors.patch')
-rw-r--r-- | testing/py3-pam/PyPAM-0.5.0-memory-errors.patch | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/testing/py3-pam/PyPAM-0.5.0-memory-errors.patch b/testing/py3-pam/PyPAM-0.5.0-memory-errors.patch deleted file mode 100644 index 6e0b4c0dce..0000000000 --- a/testing/py3-pam/PyPAM-0.5.0-memory-errors.patch +++ /dev/null @@ -1,128 +0,0 @@ -diff -up PyPAM-0.5.0/PAMmodule.c.memory PyPAM-0.5.0/PAMmodule.c ---- PyPAM-0.5.0/PAMmodule.c.memory 2012-05-07 17:22:54.503914026 +0200 -+++ PyPAM-0.5.0/PAMmodule.c 2012-05-07 17:23:15.644381942 +0200 -@@ -37,33 +37,48 @@ static void PyPAM_Err(PyPAMObject *self, - - err_msg = pam_strerror(self->pamh, result); - error = Py_BuildValue("(si)", err_msg, result); -- Py_INCREF(PyPAM_Error); - PyErr_SetObject(PyPAM_Error, error); -+ Py_XDECREF(error); - } - - static int PyPAM_conv(int num_msg, const struct pam_message **msg, - struct pam_response **resp, void *appdata_ptr) - { -- PyObject *args; -- -+ PyObject *args, *msgList, *respList, *item; -+ struct pam_response *response, *spr; - PyPAMObject* self = (PyPAMObject *) appdata_ptr; -+ - if (self->callback == NULL) - return PAM_CONV_ERR; - - Py_INCREF(self); - -- PyObject* msgList = PyList_New(num_msg); -- -+ msgList = PyList_New(num_msg); -+ if (msgList == NULL) { -+ Py_DECREF(self); -+ return PAM_CONV_ERR; -+ } -+ - for (int i = 0; i < num_msg; i++) { -- PyList_SetItem(msgList, i, -- Py_BuildValue("(si)", msg[i]->msg, msg[i]->msg_style)); -+ item = Py_BuildValue("(si)", msg[i]->msg, msg[i]->msg_style); -+ if (item == NULL) { -+ Py_DECREF(msgList); -+ Py_DECREF(self); -+ return PAM_CONV_ERR; -+ } -+ PyList_SetItem(msgList, i, item); - } -- -+ - args = Py_BuildValue("(OO)", self, msgList); -- PyObject* respList = PyEval_CallObject(self->callback, args); -+ if (args == NULL) { -+ Py_DECREF(self); -+ Py_DECREF(msgList); -+ return PAM_CONV_ERR; -+ } -+ respList = PyEval_CallObject(self->callback, args); - Py_DECREF(args); - Py_DECREF(self); -- -+ - if (respList == NULL) - return PAM_CONV_ERR; - -@@ -71,11 +86,15 @@ static int PyPAM_conv(int num_msg, const - Py_DECREF(respList); - return PAM_CONV_ERR; - } -- -- *resp = (struct pam_response *) malloc( -+ -+ response = (struct pam_response *) malloc( - PyList_Size(respList) * sizeof(struct pam_response)); -+ if (response == NULL) { -+ Py_DECREF(respList); -+ return PAM_CONV_ERR; -+ } -+ spr = response; - -- struct pam_response* spr = *resp; - for (int i = 0; i < PyList_Size(respList); i++, spr++) { - PyObject* respTuple = PyList_GetItem(respList, i); - char* resp_text; -@@ -85,7 +104,7 @@ static int PyPAM_conv(int num_msg, const - free((--spr)->resp); - --i; - } -- free(*resp); -+ free(response); - Py_DECREF(respList); - return PAM_CONV_ERR; - } -@@ -95,7 +114,8 @@ static int PyPAM_conv(int num_msg, const - } - - Py_DECREF(respList); -- -+ *resp = response; -+ - return PAM_SUCCESS; - } - -@@ -122,7 +142,11 @@ static PyObject * PyPAM_pam(PyObject *se - PyPAMObject_Type.ob_type = &PyType_Type; - p = (PyPAMObject *) PyObject_NEW(PyPAMObject, &PyPAMObject_Type); - -+ if (p == NULL) -+ return NULL; -+ - if ((spc = (struct pam_conv *) malloc(sizeof(struct pam_conv))) == NULL) { -+ Py_DECREF((PyObject *)p); - PyErr_SetString(PyExc_MemoryError, "out of memory"); - return NULL; - } -@@ -455,9 +479,15 @@ static PyObject * PyPAM_getenvlist(PyObj - } - - retval = PyList_New(0); -+ if (retval == NULL) -+ return NULL; - - while ((cp = *(result++)) != NULL) { - entry = Py_BuildValue("s", cp); -+ if (entry == NULL) { -+ Py_DECREF(retval); -+ return NULL; -+ } - PyList_Append(retval, entry); - Py_DECREF(entry); - } |