diff options
author | Lester Solbakken <lesters@yahoo-inc.com> | 2017-11-09 13:48:32 +0100 |
---|---|---|
committer | Lester Solbakken <lesters@yahoo-inc.com> | 2017-11-09 13:48:32 +0100 |
commit | a3fbdcd6ff1386b2f48b70ca817244a146edb808 (patch) | |
tree | bbc8108093d9bfa900bbc39a027be3c417154ca4 /vespajlib | |
parent | 238064fb7136aedecbff4f37c0a48f3b0152d32a (diff) |
Add bounds checking for indexed tensor
Diffstat (limited to 'vespajlib')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java | 12 |
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; } |