< prev index next >

src/java.desktop/unix/native/common/awt/X11Color.c

Print this page
rev 56159 : 8230480: check malloc/calloc results in java.desktop

@@ -400,10 +400,13 @@
     cm = awt_data->awt_cmap;
     depth = awt_data->awt_depth;
     pVI = &awt_data->awt_visInfo;
     awt_data->awt_num_colors = awt_data->awt_visInfo.colormap_size;
     awt_data->awtImage = (awtImageData *) calloc (1, sizeof (awtImageData));
+    if (awt_data->awtImage == NULL) {
+        return 0;
+    }
 
     pPFV = XListPixmapFormats(dpy, &numpfv);
     if (pPFV) {
         for (i = 0; i < numpfv; i++) {
             if (pPFV[i].depth == depth) {

@@ -560,10 +563,11 @@
         free (awt_data->awtImage);
         return 0;
     }
 
     if (depth > 12) {
+        free (awt_data->awtImage);
         return 1;
     }
 
     if (depth == 12) {
         paletteSize = MAX_PALETTE12_SIZE;

@@ -592,10 +596,14 @@
         cols[i].pixel = i;
     }
 
     awt_data->color_data->awt_Colors =
         (ColorEntry *)calloc(paletteSize, sizeof (ColorEntry));
+    if (awt_data->color_data->awt_Colors == NULL) {
+        free (awt_data->awtImage);
+        return 0;
+    }
 
     XQueryColors(dpy, cm, cols, awt_data->awt_num_colors);
     for (i = 0; i < awt_data->awt_num_colors; i++) {
         awt_data->color_data->awt_Colors[i].r = cols[i].red >> 8;
         awt_data->color_data->awt_Colors[i].g = cols[i].green >> 8;

@@ -665,10 +673,13 @@
             }
         }
 
         awt_data->color_data->img_grays =
             (unsigned char *)calloc(256, sizeof(unsigned char));
+        if ( awt_data->color_data->img_grays == NULL) {
+            return 0;
+        }
         for (g = 0; g < 256; g++) {
             int mindist, besti;
             int d;
 
             p = awt_data->color_data->awt_Colors;

@@ -808,10 +819,13 @@
         k = getVirtCubeSize();
     }
     awt_data->color_data->img_clr_tbl =
         (unsigned char *)calloc(LOOKUPSIZE * LOOKUPSIZE * LOOKUPSIZE,
                                 sizeof(unsigned char));
+    if (awt_data->color_data->img_clr_tbl == NULL) {
+        return 0;
+    }
     img_makePalette(cmapsize, k, LOOKUPSIZE, 50, 250,
                     allocatedColorsNum, TRUE, reds, greens, blues,
                     awt_data->color_data->img_clr_tbl);
                     /*img_clr_tbl);*/
 

@@ -856,10 +870,14 @@
     /* Fill in the ICM lut and lut2cmap mapping */
     awt_data->color_data->awt_numICMcolors = 0;
     awt_data->color_data->awt_icmLUT2Colors =
         (unsigned char *)calloc(paletteSize, sizeof (unsigned char));
     awt_data->color_data->awt_icmLUT = (int *)calloc(paletteSize, sizeof(int));
+    if (awt_data->color_data->awt_icmLUT2Colors == NULL || awt_data->color_data->awt_icmLUT == NULL) {
+        return 0;
+    }
+
     for (i=0; i < paletteSize; i++) {
         /* Keep the mapping between this lut and the actual cmap */
         awt_data->color_data->awt_icmLUT2Colors
             [awt_data->color_data->awt_numICMcolors] = i;
 
< prev index next >