summaryrefslogtreecommitdiffstats
path: root/vespajlib
diff options
context:
space:
mode:
authorLester Solbakken <lesters@yahoo-inc.com>2017-11-09 13:48:32 +0100
committerLester Solbakken <lesters@yahoo-inc.com>2017-11-09 13:48:32 +0100
commita3fbdcd6ff1386b2f48b70ca817244a146edb808 (patch)
treebbc8108093d9bfa900bbc39a027be3c417154ca4 /vespajlib
parent238064fb7136aedecbff4f37c0a48f3b0152d32a (diff)
Add bounds checking for indexed tensor
Diffstat (limited to 'vespajlib')
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
index 6750c99bf98..c207dabca3a 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
@@ -125,8 +125,12 @@ public class IndexedTensor implements Tensor {
if (indexes.length == 0) return 0; // for speed
int valueIndex = 0;
- for (int i = 0; i < indexes.length; i++)
+ for (int i = 0; i < indexes.length; i++) {
+ if (indexes[i] >= sizes.size(i)) {
+ throw new IndexOutOfBoundsException();
+ }
valueIndex += productOfDimensionsAfter(i, sizes) * indexes[i];
+ }
return valueIndex;
}
@@ -134,8 +138,12 @@ public class IndexedTensor implements Tensor {
if (address.isEmpty()) return 0;
int valueIndex = 0;
- for (int i = 0; i < address.size(); i++)
+ for (int i = 0; i < address.size(); i++) {
+ if (address.intLabel(i) >= sizes.size(i)) {
+ throw new IndexOutOfBoundsException();
+ }
valueIndex += productOfDimensionsAfter(i, sizes) * address.intLabel(i);
+ }
return valueIndex;
}