From 112af2e5c353fa61d587f15f6bc345bb640d2095 Mon Sep 17 00:00:00 2001
From: Emmanuel Bourg <ebourg@apache.org>
Date: Wed, 11 Jan 2023 10:03:03 +0100
Subject: [PATCH] New upstream version 4.6.1

---
 pom.xml                                         | 12 ++++++------
 .../plexus/archiver/AbstractUnArchiver.java     |  7 +++++--
 .../plexus/archiver/AbstractUnArchiverTest.java | 17 +++++++++++++++++
 3 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/pom.xml b/pom.xml
index d5cd352..9f4e3da 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,14 +10,14 @@
   </parent>
 
   <artifactId>plexus-archiver</artifactId>
-  <version>4.6.0</version>
+  <version>4.6.1</version>
   <name>Plexus Archiver Component</name>
 
   <scm>
-    <connection>scm:git:git@github.com:codehaus-plexus/plexus-archiver.git</connection>
-    <developerConnection>scm:git:git@github.com:codehaus-plexus/plexus-archiver.git</developerConnection>
+    <connection>scm:git:https://github.com/codehaus-plexus/plexus-archiver.git</connection>
+    <developerConnection>scm:git:https://github.com/codehaus-plexus/plexus-archiver.git</developerConnection>
     <url>http://github.com/codehaus-plexus/plexus-archiver/tree/${project.scm.tag}/</url>
-    <tag>plexus-archiver-4.6.0</tag>
+    <tag>plexus-archiver-4.6.1</tag>
   </scm>
   <issueManagement>
     <system>jira</system>
@@ -35,7 +35,7 @@
     <sisuVersion>0.3.5</sisuVersion>
     <slf4jVersion>1.7.36</slf4jVersion>
     <junitVersion>5.9.1</junitVersion>
-    <project.build.outputTimestamp>2022-11-11T11:11:21Z</project.build.outputTimestamp>
+    <project.build.outputTimestamp>2023-01-01T12:40:08Z</project.build.outputTimestamp>
   </properties>
 
   <contributors>
@@ -78,7 +78,7 @@
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-compress</artifactId>
-      <version>1.21</version>
+      <version>1.22</version>
     </dependency>
     <!-- Other dependencies -->
     <dependency>
diff --git a/src/main/java/org/codehaus/plexus/archiver/AbstractUnArchiver.java b/src/main/java/org/codehaus/plexus/archiver/AbstractUnArchiver.java
index 2fa2072..af58daf 100644
--- a/src/main/java/org/codehaus/plexus/archiver/AbstractUnArchiver.java
+++ b/src/main/java/org/codehaus/plexus/archiver/AbstractUnArchiver.java
@@ -426,7 +426,7 @@ protected boolean shouldExtractEntry( File targetDirectory, File targetFileName,
                 "" )
                 + suffix;
         boolean fileOnDiskIsOlderThanEntry = targetFileName.lastModified() < entryDate.getTime();
-        boolean differentCasing = !entryName.equals( relativeCanonicalDestPath );
+        boolean differentCasing = !normalizedFileSeparator( entryName ).equals( normalizedFileSeparator( relativeCanonicalDestPath ) );
 
         // Warn for case (4) and (5) if the file system is case-insensitive
         if ( differentCasing )
@@ -440,5 +440,8 @@ protected boolean shouldExtractEntry( File targetDirectory, File targetFileName,
         // Override the existing file if isOverwrite() is true or if the file on disk is older than the one in the archive
         return isOverwrite() || fileOnDiskIsOlderThanEntry;
     }
-
+    
+    private String normalizedFileSeparator(String pathOrEntry) {
+    	return pathOrEntry.replace("/", File.separator);
+    }
 }
diff --git a/src/test/java/org/codehaus/plexus/archiver/AbstractUnArchiverTest.java b/src/test/java/org/codehaus/plexus/archiver/AbstractUnArchiverTest.java
index b5bfef2..3e44088 100644
--- a/src/test/java/org/codehaus/plexus/archiver/AbstractUnArchiverTest.java
+++ b/src/test/java/org/codehaus/plexus/archiver/AbstractUnArchiverTest.java
@@ -182,4 +182,21 @@ public void shouldNotWarnAboutDifferentCasingForDirectoryEntries( @TempDir File
         assertTrue( this.abstractUnArchiver.shouldExtractEntry( temporaryFolder, file, entryname, entryDate ) );
         assertEquals( 0, this.abstractUnArchiver.casingMessageEmitted.get() );
     }
+
+    @Test
+    public void shouldExtractWhenCasingDifferOnlyInEntryNamePath( @TempDir File temporaryFolder)
+            throws IOException
+    {
+        // given
+        String entryName = "directory/whatever.txt";
+        File file = new File( temporaryFolder, entryName ); // does not create the file!
+        file.mkdirs();
+        file.createNewFile();
+        Date entryDate = new Date(System.currentTimeMillis() + 5000);
+
+        // when & then
+        abstractUnArchiver.setOverwrite( true );
+        assertTrue( abstractUnArchiver.shouldExtractEntry( temporaryFolder, file, entryName, entryDate ) );
+        assertEquals(0, abstractUnArchiver.casingMessageEmitted.get());
+    }
 }
-- 
GitLab