From ee1116f5bb9e8954a75f692540648177e3675c58 Mon Sep 17 00:00:00 2001 From: Roger Ferrel Date: Thu, 22 May 2014 09:57:41 -0500 Subject: [PATCH] Issue #3181 Add check for valid array index. Change-Id: I8e0a37bdd094b341da2ce42922a16d840d1ab468 (cherry picked from commit 466bfed41e7c675aa4ace94cef7d01c5e0c9cc11 [formerly fb4ac9acc7913ced14f702ec997f4f24758bd8fe] [formerly a1f25b87480f42a74ff4b2d5434c53141a72d703] [formerly adf6d95c016e13e4490fc2d1ffb0b54a5b26ce14 [formerly a1f25b87480f42a74ff4b2d5434c53141a72d703 [formerly ca01934f9e9d355dd4159fd472e2aa9bc0918898]]]) Former-commit-id: 54bdfef65a8680b413231c639033053fe3d75f2f [formerly 359b8359554d6eb380aa9b9aff363cdbb0c170a9 [formerly 743bfc070e5e0c82ed445afec08e294220c31018]] Former-commit-id: eb9788f9e364adb7986c16e1e6840ed28163260e [formerly 359b8359554d6eb380aa9b9aff363cdbb0c170a9] Former-commit-id: 332dd7a5570fec183a1c178f887752ba0f9ec0fa --- .../uf/common/archive/config/ArchiveConfigManager.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/ArchiveConfigManager.java b/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/ArchiveConfigManager.java index 4f769ff5cc..025e8b4d40 100644 --- a/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/ArchiveConfigManager.java +++ b/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/ArchiveConfigManager.java @@ -97,6 +97,7 @@ import com.raytheon.uf.common.util.FileUtil; * Mar 21, 2014 2835 rjpeter Optimized getDisplayData to only scan directories to the depth required to * populate the display label. * Apr 29, 2014 3036 rferrel Check for missing archive root directories. + * May 22, 2014 3181 rferrel Add check for valid array index. * * * @author rferrel @@ -658,6 +659,14 @@ public class ArchiveConfigManager { tmpDirs.clear(); int subExprIndex = 0; + /* + * Will never match when pattern's directories shorter then + * directories being scanned. + */ + if ((tokens.length - rootFileDepth) > subExpr.length) { + continue DIR_PATTERN_LOOP; + } + for (int i = rootFileDepth; i < tokens.length; i++) { Pattern subPattern = Pattern.compile("^" + subExpr[subExprIndex++] + "$");