summaryrefslogtreecommitdiffstats
path: root/src/jogl/classes/com/jogamp/opengl/util
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2013-09-04 16:24:02 +0200
committerSven Gothel <[email protected]>2013-09-04 16:24:02 +0200
commitb02fb06099e36b678a54f9ce26d127042f95e44f (patch)
tree1337216fb768305a2082621611edc575e6c9d262 /src/jogl/classes/com/jogamp/opengl/util
parentb33bdf41cf53f37203643a8551bf5d94b42a8fab (diff)
PNGImage: Bounds check in getPixelRGBA8(..) and setPixelRGBA8(..)
Diffstat (limited to 'src/jogl/classes/com/jogamp/opengl/util')
-rw-r--r--src/jogl/classes/com/jogamp/opengl/util/texture/spi/PNGImage.java8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/PNGImage.java b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/PNGImage.java
index 93d37029e..0f4559036 100644
--- a/src/jogl/classes/com/jogamp/opengl/util/texture/spi/PNGImage.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/texture/spi/PNGImage.java
@@ -87,6 +87,10 @@ public class PNGImage {
/** Reverse read and store, implicitly flip image to GL orientation, see {@link #isGLOriented()}. */
private static final int getPixelRGBA8(ByteBuffer d, int dOff, int[] scanline, int lineOff, boolean hasAlpha) {
+ final int b = hasAlpha ? 4-1 : 3-1;
+ if( d.limit() <= dOff || dOff - b < 0 ) {
+ throw new IndexOutOfBoundsException("Buffer has unsufficient bytes left, needs ["+(dOff-b)+".."+dOff+"]: "+d);
+ }
if(hasAlpha) {
d.put(dOff--, (byte)scanline[lineOff + 3]); // A
}
@@ -98,6 +102,10 @@ public class PNGImage {
/** Reverse write and store, implicitly flip image from current orientation, see {@link #isGLOriented()}. Handle reversed channels (BGR[A]). */
private int setPixelRGBA8(ImageLine line, int lineOff, ByteBuffer d, int dOff, boolean hasAlpha) {
+ final int b = hasAlpha ? 4-1 : 3-1;
+ if( d.limit() <= dOff + b ) {
+ throw new IndexOutOfBoundsException("Buffer has unsufficient bytes left, needs ["+dOff+".."+(dOff+b)+"]: "+d);
+ }
if( reversedChannels ) {
if(hasAlpha) {
line.scanline[lineOff + 3] = d.get(dOff++); // A