|
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.
|