Issue #4873: Fix resource leaks in error cases of pwd and grp.
diff --git a/Misc/NEWS b/Misc/NEWS
index a054789..7e53d24 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -1067,6 +1067,8 @@
Extension Modules
-----------------
+- Issue #4873: Fix resource leaks in error cases of pwd and grp.
+
- Issue #4751: For hashlib algorithms provided by OpenSSL, the Python
GIL is now released during computation on data lengths >= 2048 bytes.
diff --git a/Modules/grpmodule.c b/Modules/grpmodule.c
index e5b9f47..ffb451e 100644
--- a/Modules/grpmodule.c
+++ b/Modules/grpmodule.c
@@ -76,7 +76,6 @@
if (PyErr_Occurred()) {
Py_DECREF(v);
- Py_DECREF(w);
return NULL;
}
@@ -139,6 +138,7 @@
if (v == NULL || PyList_Append(d, v) != 0) {
Py_XDECREF(v);
Py_DECREF(d);
+ endgrent();
return NULL;
}
Py_DECREF(v);
diff --git a/Modules/pwdmodule.c b/Modules/pwdmodule.c
index 9e01f48..a271c5a 100644
--- a/Modules/pwdmodule.c
+++ b/Modules/pwdmodule.c
@@ -160,6 +160,7 @@
if (v == NULL || PyList_Append(d, v) != 0) {
Py_XDECREF(v);
Py_DECREF(d);
+ endpwent();
return NULL;
}
Py_DECREF(v);