src/share/classes/sun/awt/image/ByteComponentRaster.java

Print this page

        

*** 883,901 **** + "(" + dataOffsets[i] + ") must be >= 0"); } } // we can be sure that width and height are greater than 0 if (scanlineStride < 0 || ! scanlineStride > (Integer.MAX_VALUE / height) || ! scanlineStride > data.length) { // integer overflow throw new RasterFormatException("Incorrect scanline stride: " + scanlineStride); } int lastScanOffset = (height - 1) * scanlineStride; if (pixelStride < 0 || pixelStride > (Integer.MAX_VALUE / width) || pixelStride > data.length) --- 883,917 ---- + "(" + dataOffsets[i] + ") must be >= 0"); } } + if ((long)minX - sampleModelTranslateX < 0 || + (long)minY - sampleModelTranslateY < 0) { + + throw new RasterFormatException("Incorrect origin/translate: (" + + minX + ", " + minY + ") / (" + + sampleModelTranslateX + ", " + sampleModelTranslateY + ")"); + } + // we can be sure that width and height are greater than 0 if (scanlineStride < 0 || ! scanlineStride > (Integer.MAX_VALUE / height)) { // integer overflow throw new RasterFormatException("Incorrect scanline stride: " + scanlineStride); } + + if (height > 1 || minY - sampleModelTranslateY > 0) { + // buffer should contain at least one scanline + if (scanlineStride > data.length) { + throw new RasterFormatException("Incorrect scanline stride: " + + scanlineStride); + } + } + int lastScanOffset = (height - 1) * scanlineStride; if (pixelStride < 0 || pixelStride > (Integer.MAX_VALUE / width) || pixelStride > data.length)