diff options
author | Alexey Izbyshev <izbyshev@ispras.ru> | 2018-11-04 15:44:16 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2018-11-04 15:44:16 (GMT) |
commit | e359bc24b1f3a6ce311b9ef3043d1fdf5f1bf1cd (patch) | |
tree | 5c46312b979294f5f52f4545a4869ace6ee67cab /Modules/grpmodule.c | |
parent | 52465e1b8bb7af23d642dbb43c8173d079b7ec30 (diff) | |
download | cpython-e359bc24b1f3a6ce311b9ef3043d1fdf5f1bf1cd.zip cpython-e359bc24b1f3a6ce311b9ef3043d1fdf5f1bf1cd.tar.gz cpython-e359bc24b1f3a6ce311b9ef3043d1fdf5f1bf1cd.tar.bz2 |
bpo-35161: Fix stack-use-after-scope in grp.getgr{nam,gid} and pwd.getpw{nam,uid}. (GH-10319)
Reported by ASAN.
Diffstat (limited to 'Modules/grpmodule.c')
-rw-r--r-- | Modules/grpmodule.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/Modules/grpmodule.c b/Modules/grpmodule.c index 74286ab..d426f08 100644 --- a/Modules/grpmodule.c +++ b/Modules/grpmodule.c @@ -124,11 +124,12 @@ grp_getgrgid_impl(PyObject *module, PyObject *id) Py_DECREF(py_int_id); } #ifdef HAVE_GETGRGID_R - Py_BEGIN_ALLOW_THREADS int status; Py_ssize_t bufsize; + /* Note: 'grp' will be used via pointer 'p' on getgrgid_r success. */ struct group grp; + Py_BEGIN_ALLOW_THREADS bufsize = sysconf(_SC_GETGR_R_SIZE_MAX); if (bufsize == -1) { bufsize = DEFAULT_BUFFER_SIZE; @@ -204,11 +205,12 @@ grp_getgrnam_impl(PyObject *module, PyObject *name) if (PyBytes_AsStringAndSize(bytes, &name_chars, NULL) == -1) goto out; #ifdef HAVE_GETGRNAM_R - Py_BEGIN_ALLOW_THREADS int status; Py_ssize_t bufsize; + /* Note: 'grp' will be used via pointer 'p' on getgrnam_r success. */ struct group grp; + Py_BEGIN_ALLOW_THREADS bufsize = sysconf(_SC_GETGR_R_SIZE_MAX); if (bufsize == -1) { bufsize = DEFAULT_BUFFER_SIZE; |