summaryrefslogtreecommitdiffstats
path: root/Modules/spwdmodule.c
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2016-03-19 09:44:17 (GMT)
committerBerker Peksag <berker.peksag@gmail.com>2016-03-19 09:44:17 (GMT)
commit3c3d7f4b99b1f62567592ef57216e07677f17d7f (patch)
tree8965a590a381f1f7a933edc306f5bd90968f2c91 /Modules/spwdmodule.c
parentaf4a1f20bafe5bb38215d8b2cb1470bdf8fe4625 (diff)
downloadcpython-3c3d7f4b99b1f62567592ef57216e07677f17d7f.zip
cpython-3c3d7f4b99b1f62567592ef57216e07677f17d7f.tar.gz
cpython-3c3d7f4b99b1f62567592ef57216e07677f17d7f.tar.bz2
Issue #18787: spwd.getspnam() now raises a PermissionError if the user
doesn't have privileges.
Diffstat (limited to 'Modules/spwdmodule.c')
-rw-r--r--Modules/spwdmodule.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/Modules/spwdmodule.c b/Modules/spwdmodule.c
index 49324d5..e715d01 100644
--- a/Modules/spwdmodule.c
+++ b/Modules/spwdmodule.c
@@ -137,7 +137,10 @@ spwd_getspnam_impl(PyModuleDef *module, PyObject *arg)
if (PyBytes_AsStringAndSize(bytes, &name, NULL) == -1)
goto out;
if ((p = getspnam(name)) == NULL) {
- PyErr_SetString(PyExc_KeyError, "getspnam(): name not found");
+ if (errno != 0)
+ PyErr_SetFromErrno(PyExc_OSError);
+ else
+ PyErr_SetString(PyExc_KeyError, "getspnam(): name not found");
goto out;
}
retval = mkspent(p);