mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
When accessing the .value attribute of a c_wchar_p instance, and the
instance does not point to a valid wchar_t zero-terminated string, raise a ValueError. c_char_p does this already. The ValueError message now contains the correct pointer address. Will backport to release25-maint.
This commit is contained in:
parent
5a901bd3cc
commit
68bb9a1418
1 changed files with 11 additions and 3 deletions
|
@ -1366,7 +1366,7 @@ z_get(void *ptr, unsigned size)
|
||||||
if (IsBadStringPtrA(*(char **)ptr, -1)) {
|
if (IsBadStringPtrA(*(char **)ptr, -1)) {
|
||||||
PyErr_Format(PyExc_ValueError,
|
PyErr_Format(PyExc_ValueError,
|
||||||
"invalid string pointer %p",
|
"invalid string pointer %p",
|
||||||
ptr);
|
*(char **)ptr);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1451,9 +1451,17 @@ Z_get(void *ptr, unsigned size)
|
||||||
{
|
{
|
||||||
wchar_t *p;
|
wchar_t *p;
|
||||||
p = *(wchar_t **)ptr;
|
p = *(wchar_t **)ptr;
|
||||||
if (p)
|
if (p) {
|
||||||
|
#if defined(MS_WIN32) && !defined(_WIN32_WCE)
|
||||||
|
if (IsBadStringPtrW(*(wchar_t **)ptr, -1)) {
|
||||||
|
PyErr_Format(PyExc_ValueError,
|
||||||
|
"invalid string pointer %p",
|
||||||
|
*(wchar_t **)ptr);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return PyUnicode_FromWideChar(p, wcslen(p));
|
return PyUnicode_FromWideChar(p, wcslen(p));
|
||||||
else {
|
} else {
|
||||||
Py_INCREF(Py_None);
|
Py_INCREF(Py_None);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue