From: Guido van Rossum Date: Thu, 3 Jan 2008 23:52:04 +0000 (+0000) Subject: Fix bug #1301 -- a bad assert in _tkinter. X-Git-Tag: v2.5.2c1~93 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3b4a5bd9dae5504e66da4157c646f222c61e1daa;p=python Fix bug #1301 -- a bad assert in _tkinter. --- diff --git a/Misc/NEWS b/Misc/NEWS index 97027a3cbb..67af91e802 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -157,6 +157,8 @@ Library Extension Modules ----------------- +- Bug #1301: Bad assert in _tkinter fixed. + - Bug #1649098: Avoid declaration of zero-sized array declaration in structure. diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 0b853b5b48..8a702d6dae 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -936,10 +936,12 @@ AsObj(PyObject *value) /* This #ifdef assumes that Tcl uses UCS-2. See TCL_UTF_MAX test above. */ #if defined(Py_UNICODE_WIDE) && TCL_UTF_MAX == 3 - Tcl_UniChar *outbuf; + Tcl_UniChar *outbuf = NULL; Py_ssize_t i; - assert(size < size * sizeof(Tcl_UniChar)); - outbuf = (Tcl_UniChar*)ckalloc(size * sizeof(Tcl_UniChar)); + size_t allocsize = ((size_t)size) * sizeof(Tcl_UniChar); + if (allocsize >= size) + outbuf = (Tcl_UniChar*)ckalloc(allocsize); + /* Else overflow occurred, and we take the next exit */ if (!outbuf) { PyErr_NoMemory(); return NULL;