From f13e97261db179d449c6750f51ac0a26096eefdc Mon Sep 17 00:00:00 2001 From: Benjamin Reed Date: Thu, 29 Jun 2023 13:07:21 -0400 Subject: [PATCH] NMS-15806: fix some bounds-checking on possible null values --- .../resource/TimeseriesResourceStorageDao.java | 2 +- .../samplewrite/MetaTagDataLoader.java | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/features/timeseries/src/main/java/org/opennms/netmgt/timeseries/resource/TimeseriesResourceStorageDao.java b/features/timeseries/src/main/java/org/opennms/netmgt/timeseries/resource/TimeseriesResourceStorageDao.java index 6275524486db..918f4fa276d8 100644 --- a/features/timeseries/src/main/java/org/opennms/netmgt/timeseries/resource/TimeseriesResourceStorageDao.java +++ b/features/timeseries/src/main/java/org/opennms/netmgt/timeseries/resource/TimeseriesResourceStorageDao.java @@ -256,7 +256,7 @@ protected static ResourcePath toChildResourcePath(ResourcePath parent, String re final String childEls[] = child.elements(); final String parentEls[] = parent.elements(); - if (childEls.length <= parentEls.length) { + if (childEls == null || parentEls == null || childEls.length <= parentEls.length) { return null; } diff --git a/features/timeseries/src/main/java/org/opennms/netmgt/timeseries/samplewrite/MetaTagDataLoader.java b/features/timeseries/src/main/java/org/opennms/netmgt/timeseries/samplewrite/MetaTagDataLoader.java index d32dab171ac6..63ab870fec3f 100644 --- a/features/timeseries/src/main/java/org/opennms/netmgt/timeseries/samplewrite/MetaTagDataLoader.java +++ b/features/timeseries/src/main/java/org/opennms/netmgt/timeseries/samplewrite/MetaTagDataLoader.java @@ -145,14 +145,16 @@ private String getNodeCriteriaFromResource(CollectionResource resource) { String nodeCriteria = null; if (resource.getParent() != null) { - String[] resourcePathArray = resource.getParent().elements(); - if (ResourceTypeUtils.FOREIGN_SOURCE_DIRECTORY.equals(resourcePathArray[0]) - && resourcePathArray.length == 3) { - // parent denotes nodeCriteria, form fs:fid - nodeCriteria = resourcePathArray[1] + ":" + resourcePathArray[2]; - } else if (checkNumeric(resourcePathArray[0])) { - // parent denotes nodeId - nodeCriteria = resourcePathArray[0]; + final String[] resourcePathArray = resource.getParent().elements(); + if (resourcePathArray != null) { + if (ResourceTypeUtils.FOREIGN_SOURCE_DIRECTORY.equals(resourcePathArray[0]) + && resourcePathArray.length == 3) { + // parent denotes nodeCriteria, form fs:fid + nodeCriteria = resourcePathArray[1] + ":" + resourcePathArray[2]; + } else if (checkNumeric(resourcePathArray[0])) { + // parent denotes nodeId + nodeCriteria = resourcePathArray[0]; + } } } return nodeCriteria;