]> granicus.if.org Git - python/commitdiff
Add two missing error checks in hamt.c (GH-5851)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 8 Mar 2018 06:21:34 +0000 (22:21 -0800)
committerGitHub <noreply@github.com>
Thu, 8 Mar 2018 06:21:34 +0000 (22:21 -0800)
(cherry picked from commit 3c7ac7ea2098c672e50402d1d1b5ee9f14586437)

Co-authored-by: Xiang Zhang <angwerzx@126.com>
Python/hamt.c

index e54d3a4c55f912d04593231d7322de57bedd5c7a..53a85723745ecbedfc004451c0d2d799e2333332 100644 (file)
@@ -1510,6 +1510,9 @@ hamt_node_collision_without(PyHamtNode_Collision *self,
             PyHamtNode_Collision *new = (PyHamtNode_Collision *)
                 hamt_node_collision_new(
                     self->c_hash, Py_SIZE(self) - 2);
+            if (new == NULL) {
+                return W_ERROR;
+            }
 
             /* Copy all other keys from `self` to `new` */
             Py_ssize_t i;
@@ -1742,7 +1745,10 @@ hamt_node_array_assoc(PyHamtNode_Array *self,
            Set the key to it./ */
         child_node = hamt_node_assoc(
             node, shift + 5, hash, key, val, added_leaf);
-        if (child_node == (PyHamtNode *)self) {
+        if (child_node == NULL) {
+            return NULL;
+        }
+        else if (child_node == (PyHamtNode *)self) {
             Py_DECREF(child_node);
             return (PyHamtNode *)self;
         }