]> granicus.if.org Git - python/commitdiff
Fixed memory leak.
authorHirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
Tue, 3 Mar 2009 22:05:57 +0000 (22:05 +0000)
committerHirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
Tue, 3 Mar 2009 22:05:57 +0000 (22:05 +0000)
Modules/sha256module.c
Modules/sha512module.c

index e10ab9ecc504163ac1c09e48dbd6e50fcfe383b8..f489f48893b47c65ca9e2f41a0672fdf72a1f5c3 100644 (file)
@@ -629,13 +629,18 @@ SHA256_new(PyObject *self, PyObject *args, PyObject *kwdict)
     if (data_obj)
         GET_BUFFER_VIEW_OR_ERROUT(data_obj, &buf, NULL);
 
-    if ((new = newSHA256object()) == NULL)
+    if ((new = newSHA256object()) == NULL) {
+        if (data_obj)
+            PyBuffer_Release(&buf);
         return NULL;
+    }
 
     sha_init(new);
 
     if (PyErr_Occurred()) {
         Py_DECREF(new);
+        if (data_obj)
+            PyBuffer_Release(&buf);
         return NULL;
     }
     if (data_obj) {
@@ -665,13 +670,18 @@ SHA224_new(PyObject *self, PyObject *args, PyObject *kwdict)
     if (data_obj)
         GET_BUFFER_VIEW_OR_ERROUT(data_obj, &buf, NULL);
 
-    if ((new = newSHA224object()) == NULL)
+    if ((new = newSHA224object()) == NULL) {
+        if (data_obj)
+            PyBuffer_Release(&buf);
         return NULL;
+    }
 
     sha224_init(new);
 
     if (PyErr_Occurred()) {
         Py_DECREF(new);
+        if (data_obj)
+            PyBuffer_Release(&buf);
         return NULL;
     }
     if (data_obj) {
index 5e606cb89f475d68c0dbd501d7499580efbcb886..24812752f84b44095736a40462ce3be3a656a72c 100644 (file)
@@ -695,13 +695,18 @@ SHA512_new(PyObject *self, PyObject *args, PyObject *kwdict)
     if (data_obj)
         GET_BUFFER_VIEW_OR_ERROUT(data_obj, &buf, NULL);
 
-    if ((new = newSHA512object()) == NULL)
+    if ((new = newSHA512object()) == NULL) {
+        if (data_obj)
+            PyBuffer_Release(&buf);
         return NULL;
+    }
 
     sha512_init(new);
 
     if (PyErr_Occurred()) {
         Py_DECREF(new);
+        if (data_obj)
+            PyBuffer_Release(&buf);
         return NULL;
     }
     if (data_obj) {
@@ -731,13 +736,18 @@ SHA384_new(PyObject *self, PyObject *args, PyObject *kwdict)
     if (data_obj)
         GET_BUFFER_VIEW_OR_ERROUT(data_obj, &buf, NULL);
 
-    if ((new = newSHA384object()) == NULL)
+    if ((new = newSHA384object()) == NULL) {
+        if (data_obj)
+            PyBuffer_Release(&buf);
         return NULL;
+    }
 
     sha384_init(new);
 
     if (PyErr_Occurred()) {
         Py_DECREF(new);
+        if (data_obj)
+            PyBuffer_Release(&buf);
         return NULL;
     }
     if (data_obj) {