From 4182dace3cdf82781fbde11ebc72f85cb4d95d40 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Fri, 11 Jan 2019 11:33:29 +0100 Subject: [PATCH] DATACMNS-1466 - Fixed potential ArrayIndexOutOfBoundsException in DefaultPersistentPropertyPath. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduced explicit content checks in ….getLeafProperty() and ….getBaseProperty(). --- .../context/DefaultPersistentPropertyPath.java | 4 ++-- .../DefaultPersistenPropertyPathUnitTests.java | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/data/mapping/context/DefaultPersistentPropertyPath.java b/src/main/java/org/springframework/data/mapping/context/DefaultPersistentPropertyPath.java index c4173ad72..31b28c58f 100644 --- a/src/main/java/org/springframework/data/mapping/context/DefaultPersistentPropertyPath.java +++ b/src/main/java/org/springframework/data/mapping/context/DefaultPersistentPropertyPath.java @@ -145,7 +145,7 @@ class DefaultPersistentPropertyPath> implements * @see org.springframework.data.mapping.context.PersistentPropertyPath#getLeafProperty() */ public T getLeafProperty() { - return properties.get(properties.size() - 1); + return properties.isEmpty() ? null : properties.get(properties.size() - 1); } /* @@ -153,7 +153,7 @@ class DefaultPersistentPropertyPath> implements * @see org.springframework.data.mapping.context.PersistentPropertyPath#getBaseProperty() */ public T getBaseProperty() { - return properties.get(0); + return properties.isEmpty() ? null : properties.get(0); } /* diff --git a/src/test/java/org/springframework/data/mapping/context/DefaultPersistenPropertyPathUnitTests.java b/src/test/java/org/springframework/data/mapping/context/DefaultPersistenPropertyPathUnitTests.java index 45b001d2c..2a472ccb3 100644 --- a/src/test/java/org/springframework/data/mapping/context/DefaultPersistenPropertyPathUnitTests.java +++ b/src/test/java/org/springframework/data/mapping/context/DefaultPersistenPropertyPathUnitTests.java @@ -21,6 +21,7 @@ import static org.mockito.Matchers.*; import static org.mockito.Mockito.*; import java.util.Arrays; +import java.util.Collections; import org.junit.Before; import org.junit.Test; @@ -148,4 +149,19 @@ public class DefaultPersistenPropertyPathUnitTests path = new DefaultPersistentPropertyPath(Collections. emptyList()); + + assertThat(path.getLeafProperty(), is(nullValue())); + } + + @Test // DATACMNS-1466 + public void returnsNullForBasePropertyOnEmptyPath() { + + PersistentPropertyPath path = new DefaultPersistentPropertyPath(Collections. emptyList()); + + assertThat(path.getBaseProperty(), is(nullValue())); + } }