summaryrefslogtreecommitdiffstats
path: root/PC/_msi.c
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2017-06-28 05:30:06 (GMT)
committerGitHub <noreply@github.com>2017-06-28 05:30:06 (GMT)
commitf7eae0adfcd4c50034281b2c69f461b43b68db84 (patch)
tree02d6a582fd81f615e71c55365f1b37a774fc0a4e /PC/_msi.c
parent592eda123329bb5ce2bffcbe3701be6b909f1b2a (diff)
downloadcpython-f7eae0adfcd4c50034281b2c69f461b43b68db84.zip
cpython-f7eae0adfcd4c50034281b2c69f461b43b68db84.tar.gz
cpython-f7eae0adfcd4c50034281b2c69f461b43b68db84.tar.bz2
[security] bpo-13617: Reject embedded null characters in wchar* strings. (#2302)
Based on patch by Victor Stinner. Add private C API function _PyUnicode_AsUnicode() which is similar to PyUnicode_AsUnicode(), but checks for null characters.
Diffstat (limited to 'PC/_msi.c')
-rw-r--r--PC/_msi.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/PC/_msi.c b/PC/_msi.c
index feb0088..a901f98 100644
--- a/PC/_msi.c
+++ b/PC/_msi.c
@@ -594,8 +594,12 @@ summary_setproperty(msiobj* si, PyObject *args)
return NULL;
if (PyUnicode_Check(data)) {
+ WCHAR *value = _PyUnicode_AsUnicode(data);
+ if (value == NULL) {
+ return NULL;
+ }
status = MsiSummaryInfoSetPropertyW(si->h, field, VT_LPSTR,
- 0, NULL, PyUnicode_AsUnicode(data));
+ 0, NULL, value);
} else if (PyLong_CheckExact(data)) {
long value = PyLong_AsLong(data);
if (value == -1 && PyErr_Occurred()) {