diff -r 38ffd0c8fd2b -r 8e3cd84800e3 jdk/src/share/classes/java/awt/image/SinglePixelPackedSampleModel.java --- a/jdk/src/share/classes/java/awt/image/SinglePixelPackedSampleModel.java Tue Mar 22 11:22:38 2011 +0300 +++ b/jdk/src/share/classes/java/awt/image/SinglePixelPackedSampleModel.java Tue Mar 22 12:28:03 2011 +0300 @@ -461,7 +461,12 @@ */ public int[] getPixels(int x, int y, int w, int h, int iArray[], DataBuffer data) { - if ((x < 0) || (y < 0) || (x + w > width) || (y + h > height)) { + int x1 = x + w; + int y1 = y + h; + + if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width || + y < 0 || y >= height || h > height || y1 < 0 || y1 > height) + { throw new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!"); } @@ -659,7 +664,12 @@ */ public void setPixels(int x, int y, int w, int h, int iArray[], DataBuffer data) { - if ((x < 0) || (y < 0) || (x + w > width) || (y + h > height)) { + int x1 = x + w; + int y1 = y + h; + + if (x < 0 || x >= width || w > width || x1 < 0 || x1 > width || + y < 0 || y >= height || h > height || y1 < 0 || y1 > height) + { throw new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!"); }