]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Merged revisions 55027 via svnmerge from
authorThomas Heller <theller@ctypes.org>
Wed, 2 May 2007 19:41:16 +0000 (19:41 +0000)
committerThomas Heller <theller@ctypes.org>
Wed, 2 May 2007 19:41:16 +0000 (19:41 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk/Modules/_ctypes

........
  r55027 | thomas.heller | 2007-04-30 18:04:57 +0200 (Mo, 30 Apr 2007) | 8 lines

  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.
........

Modules/_ctypes/cfield.c

index 6aa68a8f1ffc10903b3ad37ef8d8c5dd1e0f8110..9fef3e7886f3b8dc8d126669b8aa767a0741ef2f 100644 (file)
@@ -1333,7 +1333,7 @@ z_get(void *ptr, unsigned size)
                if (IsBadStringPtrA(*(char **)ptr, -1)) {
                        PyErr_Format(PyExc_ValueError,
                                     "invalid string pointer %p",
-                                    ptr);
+                                    *(char **)ptr);
                        return NULL;
                }
 #endif
@@ -1414,9 +1414,17 @@ Z_get(void *ptr, unsigned size)
 {
        wchar_t *p;
        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));
-       else {
+       else {
                Py_INCREF(Py_None);
                return Py_None;
        }