From: <sp...@us...> - 2011-07-12 20:40:11
|
Revision: 3578 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3578&view=rev Author: spasi Date: 2011-07-12 20:40:05 +0000 (Tue, 12 Jul 2011) Log Message: ----------- Added bounds check to copyRange. Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/util/mapped/MappedHelper.java trunk/LWJGL/src/java/org/lwjgl/util/mapped/MappedObject.java Modified: trunk/LWJGL/src/java/org/lwjgl/util/mapped/MappedHelper.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/mapped/MappedHelper.java 2011-07-12 19:29:15 UTC (rev 3577) +++ trunk/LWJGL/src/java/org/lwjgl/util/mapped/MappedHelper.java 2011-07-12 20:40:05 UTC (rev 3578) @@ -106,6 +106,11 @@ } public static void copy(MappedObject src, MappedObject dst, int bytes) { + if ( MappedObject.CHECKS ) { + src.checkRange(bytes); + dst.checkRange(bytes); + } + MappedObjectUnsafe.INSTANCE.copyMemory(src.viewAddress, dst.viewAddress, bytes); } Modified: trunk/LWJGL/src/java/org/lwjgl/util/mapped/MappedObject.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/mapped/MappedObject.java 2011-07-12 19:29:15 UTC (rev 3577) +++ trunk/LWJGL/src/java/org/lwjgl/util/mapped/MappedObject.java 2011-07-12 20:40:05 UTC (rev 3578) @@ -33,6 +33,7 @@ import org.lwjgl.LWJGLUtil; +import java.nio.BufferOverflowException; import java.nio.ByteBuffer; /** @@ -97,10 +98,19 @@ } final void checkAddress(final long address) { - if ( preventGC.capacity() < (address - MappedObjectUnsafe.getBufferBaseAddress(preventGC) + stride) ) + final long base = MappedObjectUnsafe.getBufferBaseAddress(preventGC); + if ( address < base || preventGC.capacity() < (address - base + stride) ) throw new IndexOutOfBoundsException(); } + final void checkRange(final int bytes) { + if ( bytes < 0 ) + throw new IllegalArgumentException(); + + if ( preventGC.capacity() < (viewAddress - MappedObjectUnsafe.getBufferBaseAddress(preventGC) + bytes) ) + throw new BufferOverflowException(); + } + /** * Creates a MappedObject instance, mapping the memory region of the specified direct ByteBuffer. * <p/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |