From: Andrew M. Kuchling Date: Wed, 4 Oct 2006 13:20:05 +0000 (+0000) Subject: [Backport r51232 | neal.norwitz] X-Git-Tag: v2.4.4c1~48 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d3499a30713c972e293ee677efe7b37a41efb4db;p=thirdparty%2FPython%2Fcpython.git [Backport r51232 | neal.norwitz] Verify verdat which is returned from malloc is not NULL. Ensure we don't pass NULL to free. Klocwork #306 (at least the first part, checking malloc) --- diff --git a/Modules/rgbimgmodule.c b/Modules/rgbimgmodule.c index 8c70d95e74ff..c5190c2d2166 100644 --- a/Modules/rgbimgmodule.c +++ b/Modules/rgbimgmodule.c @@ -410,6 +410,11 @@ longimagedata(PyObject *self, PyObject *args) addlongimgtag(base, xsize, ysize); #endif verdat = (unsigned char *)malloc(xsize); + if (!verdat) { + Py_CLEAR(rv); + goto finally; + } + fseek(inf, 512, SEEK_SET); for (z = 0; z < zsize; z++) { lptr = base; @@ -431,10 +436,14 @@ longimagedata(PyObject *self, PyObject *args) copybw((Py_Int32 *) base, xsize * ysize); } finally: - free(starttab); - free(lengthtab); - free(rledat); - free(verdat); + if (starttab) + free(starttab); + if (lengthtab) + free(lengthtab); + if (rledat) + free(rledat); + if (verdat) + free(verdat); fclose(inf); return rv; }