[Python-checkins] r55027 - python/trunk/Modules/_ctypes/cfield.c

thomas.heller python-checkins at python.org
Mon Apr 30 18:05:01 CEST 2007


Author: thomas.heller
Date: Mon Apr 30 18:04:57 2007
New Revision: 55027

Modified:
   python/trunk/Modules/_ctypes/cfield.c
Log:
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.


Modified: python/trunk/Modules/_ctypes/cfield.c
==============================================================================
--- python/trunk/Modules/_ctypes/cfield.c	(original)
+++ python/trunk/Modules/_ctypes/cfield.c	Mon Apr 30 18:04:57 2007
@@ -1366,7 +1366,7 @@
 		if (IsBadStringPtrA(*(char **)ptr, -1)) {
 			PyErr_Format(PyExc_ValueError,
 				     "invalid string pointer %p",
-				     ptr);
+				     *(char **)ptr);
 			return NULL;
 		}
 #endif
@@ -1451,9 +1451,17 @@
 {
 	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;
 	}


More information about the Python-checkins mailing list