]> granicus.if.org Git - python/commitdiff
Verify verdat which is returned from malloc is not NULL.
authorNeal Norwitz <nnorwitz@gmail.com>
Sat, 12 Aug 2006 03:18:50 +0000 (03:18 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Sat, 12 Aug 2006 03:18:50 +0000 (03:18 +0000)
Ensure we don't pass NULL to free.

Klocwork #306 (at least the first part, checking malloc)

Modules/rgbimgmodule.c

index a2b91c4b2a36d4eab35ac282aed5e7f0f00d724e..0f9ee71f241f7a16bb77405603f81a9a53f54751 100644 (file)
@@ -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;
 }