Skip to content

Commit 9ee7242

Browse files
committed
Don't sefault when decoding dicts with broken iterators PYTHON-177
1 parent 054459f commit 9ee7242

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

bson/_cbsonmodule.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -778,6 +778,12 @@ int write_dict(buffer_t buffer, PyObject* dict, unsigned char check_keys, unsign
778778
}
779779
while ((key = PyIter_Next(iter)) != NULL) {
780780
PyObject* value = PyDict_GetItem(dict, key);
781+
if (!value) {
782+
PyErr_SetObject(PyExc_KeyError, key);
783+
Py_DECREF(key);
784+
Py_DECREF(iter);
785+
return 0;
786+
}
781787
if (!decode_and_write_pair(buffer, key, value, check_keys, top_level)) {
782788
Py_DECREF(key);
783789
Py_DECREF(iter);

0 commit comments

Comments
 (0)