gh-111841: Fix os.putenv() and os.unsetenv() with embedded NUL on Windows (GH-111842)

This commit is contained in:
Serhiy Storchaka 2023-11-10 18:42:14 +02:00 committed by GitHub
parent 2e7f070080
commit 0b06d2482d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 19 additions and 9 deletions

View file

@ -12280,7 +12280,6 @@ win32_putenv(PyObject *name, PyObject *value)
}
Py_ssize_t size;
/* PyUnicode_AsWideCharString() rejects embedded null characters */
wchar_t *env = PyUnicode_AsWideCharString(unicode, &size);
Py_DECREF(unicode);
@ -12294,6 +12293,12 @@ win32_putenv(PyObject *name, PyObject *value)
PyMem_Free(env);
return NULL;
}
if (wcslen(env) != (size_t)size) {
PyErr_SetString(PyExc_ValueError,
"embedded null character");
PyMem_Free(env);
return NULL;
}
/* _wputenv() and SetEnvironmentVariableW() update the environment in the
Process Environment Block (PEB). _wputenv() also updates CRT 'environ'