diff --git a/pom.xml b/pom.xml index ac3389b5..e459e9ea 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ plexus-archiver - 4.10.1 + 4.10.2 Plexus Archiver Component https://codehaus-plexus.github.io/plexus-archiver/ @@ -30,7 +30,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-archiver.git scm:git:https://github.com/codehaus-plexus/plexus-archiver.git - plexus-archiver-4.10.1 + plexus-archiver-4.10.2 https://github.com/codehaus-plexus/plexus-archiver/tree/${project.scm.tag}/ @@ -47,7 +47,7 @@ 1.7.36 0.9.0.M4 - 2025-08-20T17:55:16Z + 2025-09-30T22:11:17Z @@ -140,7 +140,7 @@ org.assertj assertj-core - 3.27.4 + 3.27.6 test diff --git a/src/main/java/org/codehaus/plexus/archiver/zip/AbstractZipArchiver.java b/src/main/java/org/codehaus/plexus/archiver/zip/AbstractZipArchiver.java index 0b4bdb5e..dccb7edc 100755 --- a/src/main/java/org/codehaus/plexus/archiver/zip/AbstractZipArchiver.java +++ b/src/main/java/org/codehaus/plexus/archiver/zip/AbstractZipArchiver.java @@ -698,7 +698,14 @@ protected FileTime normalizeLastModifiedTime(FileTime lastModifiedTime) { */ private static long dosToJavaTime(long dosTime) { Calendar cal = Calendar.getInstance(TimeZone.getDefault(), Locale.ROOT); + if (dosTime < MIN_DOS_JAVA_TIME) { + dosTime = MIN_DOS_JAVA_TIME; + } cal.setTimeInMillis(dosTime); return dosTime - (cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET)); } + + // minimum DOS time that will give a positive Java time, whatever the current TZ is: + // biggest TZ offset is for Etc/GMT-14 https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + private static final long MIN_DOS_JAVA_TIME = 1000 * 14 * 3600; }