From 6e436a7cf59a82b0cefbfc744bafdcc0dbd57864 Mon Sep 17 00:00:00 2001
From: dgelessus <dgelessus@users.noreply.github.com>
Date: Thu, 19 Jul 2018 18:40:16 +0200
Subject: [PATCH] Fix AIOOBE in CommandUtils.inspectArgs/completeArgs

---
 .../java/de/prob2/jupyter/commands/CommandUtils.java   | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/main/java/de/prob2/jupyter/commands/CommandUtils.java b/src/main/java/de/prob2/jupyter/commands/CommandUtils.java
index fce3cd2..ecc1e46 100644
--- a/src/main/java/de/prob2/jupyter/commands/CommandUtils.java
+++ b/src/main/java/de/prob2/jupyter/commands/CommandUtils.java
@@ -238,12 +238,15 @@ public final class CommandUtils {
 		int argStart = 0;
 		int argEnd = argString.length();
 		int i = 0;
-		while (argSplitMatcher.find() && i < inspectors.length) {
+		while (argSplitMatcher.find()) {
 			if (argSplitMatcher.end() > at) {
 				argEnd = argSplitMatcher.start();
 				break;
 			}
 			argStart = argSplitMatcher.end();
+			if (i >= inspectors.length-1) {
+				break;
+			}
 			i++;
 		}
 		return inspectors[i].inspect(argString.substring(argStart, argEnd), at - argStart);
@@ -254,12 +257,15 @@ public final class CommandUtils {
 		int argStart = 0;
 		int argEnd = argString.length();
 		int i = 0;
-		while (argSplitMatcher.find() && i < completers.length) {
+		while (argSplitMatcher.find()) {
 			if (argSplitMatcher.end() > at) {
 				argEnd = argSplitMatcher.start();
 				break;
 			}
 			argStart = argSplitMatcher.end();
+			if (i >= completers.length-1) {
+				break;
+			}
 			i++;
 		}
 		final ReplacementOptions replacements = completers[i].complete(argString.substring(argStart, argEnd), at - argStart);
-- 
GitLab