summaryrefslogtreecommitdiff
path: root/src/block_template.c
diff options
context:
space:
mode:
authorDwayne C. Litzenberger <dlitz@dlitz.net>2009-08-02 15:18:32 -0400
committerDwayne C. Litzenberger <dlitz@dlitz.net>2009-08-02 15:28:29 -0400
commit55482695ae5ea5ddc0dbe2b782fbfa65c38c9342 (patch)
treec5073a7fc0317a85a52ded24681f7ff0c1556bba /src/block_template.c
parentac105f4a9b4f6ec7ff456cee854987f3e8543745 (diff)
downloadpycrypto-55482695ae5ea5ddc0dbe2b782fbfa65c38c9342.tar.gz
block_template.c: Fix what looks like some memory leaks that occur during errors
Diffstat (limited to 'src/block_template.c')
-rw-r--r--src/block_template.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/block_template.c b/src/block_template.c
index 9155e08..98ee2a4 100644
--- a/src/block_template.c
+++ b/src/block_template.c
@@ -164,6 +164,7 @@ ALGnew(PyObject *self, PyObject *args, PyObject *kwdict)
PyErr_Format(PyExc_ValueError,
"segment_size must be multiple of 8 "
"between 1 and %i", BLOCK_SIZE);
+ return NULL;
}
}
@@ -177,11 +178,13 @@ ALGnew(PyObject *self, PyObject *args, PyObject *kwdict)
} else if (!PyCallable_Check(counter)) {
PyErr_SetString(PyExc_ValueError,
"'counter' parameter must be a callable object");
+ return NULL;
}
} else {
if (counter != NULL) {
PyErr_SetString(PyExc_ValueError,
"'counter' parameter only useful with CTR mode");
+ return NULL;
}
}
@@ -233,6 +236,7 @@ ALGnew(PyObject *self, PyObject *args, PyObject *kwdict)
block_init(&(new->st), key, keylen);
if (PyErr_Occurred())
{
+ Py_XDECREF(counter);
Py_DECREF(new);
return NULL;
}