From 9769fabb325b8a5c073bb15b28c972441498cf13 Mon Sep 17 00:00:00 2001
From: Daniel Rose <droseger@protonmail.com>
Date: Fri, 13 Jul 2018 10:38:03 +0200
Subject: [PATCH] [MinMax] excess: add error handling for invalid index value

---
 src/common/min_max.rs | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/common/min_max.rs b/src/common/min_max.rs
index 3be6cf7..fad2a5c 100644
--- a/src/common/min_max.rs
+++ b/src/common/min_max.rs
@@ -204,6 +204,9 @@ impl MinMax {
     }
 
     pub fn excess(&self, index: u64) -> Result<u64, NodeError> {
+        if index >= self.bits.len() {
+            return Err(NodeError::NotANodeError);
+        }
         let block_number = (index / self.block_size);
         let position_in_block = index % self.block_size;
         let mut pre_excess: i64 = 0;
@@ -665,7 +668,6 @@ mod tests {
         let min_max = MinMax::new(bits, 4);
         assert_eq!(min_max.excess(21).unwrap(), 0);
         assert_eq!(min_max.excess(7).unwrap(), 4);
-        // TODO: Werden schon ungültige index-werte zurückgewiesen?
     }
 
     #[test]
@@ -674,6 +676,7 @@ mod tests {
         let min_max = MinMax::new(bits, 2);
         assert_eq!(min_max.excess(0).unwrap(), 1);
         assert_eq!(min_max.excess(1).unwrap(), 0);
+        assert_eq!(min_max.excess(2).unwrap_err(), NodeError::NotANodeError);
     }
 
     #[test]
-- 
GitLab