You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sj...@apache.org on 2022/09/08 19:13:23 UTC

[maven-common-artifact-filters] branch master updated: [MSHARED-1130] Sanitised value nullability in match(Pattern, boolean, String)

This is an automated email from the ASF dual-hosted git repository.

sjaranowski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-common-artifact-filters.git


The following commit(s) were added to refs/heads/master by this push:
     new 500569d  [MSHARED-1130] Sanitised value nullability in match(Pattern, boolean, String)
500569d is described below

commit 500569dad88b8f91e77116a2743a4685c920bed5
Author: Andrzej Jarmoniuk <gh...@jarmoniuk.nl>
AuthorDate: Thu Sep 8 06:48:53 2022 +0200

    [MSHARED-1130] Sanitised value nullability in match(Pattern, boolean, String)
---
 .../filter/PatternIncludesArtifactFilter.java      |  2 +-
 .../filter/AbstractPatternArtifactFilterTest.java  | 34 ++++++++++++++++++----
 2 files changed, 30 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 class PatternIncludesArtifactFilter implements ArtifactFilter, Statistics
     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..8154a6f 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 @@ package org.apache.maven.shared.artifact.filter;
  * 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,26 @@ public abstract class AbstractPatternArtifactFilterTest
             assertTrue( filter.include( artifact2 ) );
         }
     }
+
+    @Test
+    public void testPartialWildcardShouldNotMatchEmptyComponent()
+    {
+        Artifact artifact = mock( Artifact.class );
+        when( artifact.getGroupId() ).thenReturn( "test-group" );
+        when( artifact.getArtifactId() ).thenReturn( "test-artifact" );
+        when( artifact.getVersion() ).thenReturn( "test-version" );
+        when( artifact.hasClassifier() ).thenReturn( false );
+
+        ArtifactFilter filter = createFilter(
+                Collections.singletonList( "test-group:test-artifact:*:ERROR*" ) );
+
+        if ( isInclusionNotExpected() )
+        {
+            assertTrue( filter.include( artifact ) );
+        }
+        else
+        {
+            assertFalse( filter.include( artifact ) );
+        }
+    }
 }