summaryrefslogtreecommitdiff
path: root/graphics/java/android/renderscript/FieldPacker.java
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/java/android/renderscript/FieldPacker.java')
-rw-r--r--graphics/java/android/renderscript/FieldPacker.java15
1 files changed, 14 insertions, 1 deletions
diff --git a/graphics/java/android/renderscript/FieldPacker.java b/graphics/java/android/renderscript/FieldPacker.java
index bdda8305e2ed..6487623a0bb4 100644
--- a/graphics/java/android/renderscript/FieldPacker.java
+++ b/graphics/java/android/renderscript/FieldPacker.java
@@ -25,10 +25,15 @@ package android.renderscript;
public class FieldPacker {
public FieldPacker(int len) {
mPos = 0;
+ mLen = len;
mData = new byte[len];
}
public void align(int v) {
+ if ((v <= 0) || ((v & (v - 1)) != 0)) {
+ throw new RSIllegalArgumentException("argument must be a non-negative non-zero power of 2: " + v);
+ }
+
while ((mPos & (v - 1)) != 0) {
mData[mPos++] = 0;
}
@@ -38,11 +43,18 @@ public class FieldPacker {
mPos = 0;
}
public void reset(int i) {
+ if ((i < 0) || (i >= mLen)) {
+ throw new RSIllegalArgumentException("out of range argument: " + i);
+ }
mPos = i;
}
public void skip(int i) {
- mPos += i;
+ int res = mPos + i;
+ if ((res < 0) || (res >= mLen)) {
+ throw new RSIllegalArgumentException("out of range argument: " + i);
+ }
+ mPos = res;
}
public void addI8(byte v) {
@@ -277,6 +289,7 @@ public class FieldPacker {
private final byte mData[];
private int mPos;
+ private int mLen;
}