From 0e88be999a62f451beacc88535f3f1d60b1dbdbe Mon Sep 17 00:00:00 2001 From: Andrzej Jarmoniuk Date: Thu, 8 Sep 2022 06:48:53 +0200 Subject: [PATCH] MSHARED-1130: Sanitised value nullability in match(Pattern, boolean, String) --- .../filter/PatternIncludesArtifactFilter.java | 2 +- .../AbstractPatternArtifactFilterTest.java | 31 ++++++++++++++++--- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java b/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java index 3afbbde..274e885 100644 --- a/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java +++ b/src/main/java/org/apache/maven/shared/artifact/filter/PatternIncludesArtifactFilter.java @@ -650,7 +650,7 @@ public boolean matches( Artifactoid artifactoid ) private static boolean match( final String pattern, final boolean containsAsterisk, final String value ) { char[] patArr = pattern.toCharArray(); - char[] strArr = value.toCharArray(); + char[] strArr = value != null ? value.toCharArray() : new char[0]; int patIdxStart = 0; int patIdxEnd = patArr.length - 1; int strIdxStart = 0; diff --git a/src/test/java/org/apache/maven/shared/artifact/filter/AbstractPatternArtifactFilterTest.java b/src/test/java/org/apache/maven/shared/artifact/filter/AbstractPatternArtifactFilterTest.java index 2a6d914..1debc4b 100644 --- a/src/test/java/org/apache/maven/shared/artifact/filter/AbstractPatternArtifactFilterTest.java +++ b/src/test/java/org/apache/maven/shared/artifact/filter/AbstractPatternArtifactFilterTest.java @@ -19,20 +19,22 @@ * under the License. */ -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.DefaultArtifact; +import org.apache.maven.artifact.handler.ArtifactHandler; import org.apache.maven.artifact.resolver.filter.ArtifactFilter; import org.junit.Test; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + public abstract class AbstractPatternArtifactFilterTest { @@ -579,4 +581,23 @@ public void testmassembly955() assertTrue( filter.include( artifact2 ) ); } } + + @Test + public void testPartialWildcardShouldNotMatchEmptyComponent() + { + Artifact artifact = new DefaultArtifact( "test-group", "test-artifact", "test-version", + null, "jar", null, mock( ArtifactHandler.class) ); + + ArtifactFilter filter = createFilter( + Collections.singletonList( "test-group:test-artifact:*:ERROR*" ) ); + + if ( isInclusionNotExpected() ) + { + assertTrue( filter.include( artifact ) ); + } + else + { + assertFalse( filter.include( artifact ) ); + } + } }