From f55b086a1a7fbe0a99f50f3673f1149fcdcf6aa5 Mon Sep 17 00:00:00 2001
From: "vijaya.boddipudi" <216913149+vijaya-boddipudi@users.noreply.github.com>
Date: Mon, 24 Aug 2026 19:53:20 +0530
Subject: [PATCH] fix(dts): bundle ZipSlipGuard into delivery-tier-distribution
jar (#65)
MainDTSPreInstall calls com.percussion.security.io.ZipSlipGuard but
delivery-tier-distribution declared no dependency on perc-security-utils
and its jar was built without bundled dependencies. Running
java -jar delivery-tier-distribution.jar at pre-install time then
threw NoClassDefFoundError: com/percussion/security/io/ZipSlipGuard.
- Declare compile-scope dep on com.percussion:perc-security-utils.
- Add maven-assembly-plugin with jar-with-dependencies so the
produced jar bundles runtime deps, mirroring the pattern in
modules/perc-distribution-tree/pom.xml.
Spotless comment-wrap delta in MainDTSPreInstall.java is incidental.
---
.../delivery-tier-distribution/pom.xml | 29 +++++++++++++++++++
.../preinstall/MainDTSPreInstall.java | 6 ++--
2 files changed, 33 insertions(+), 2 deletions(-)
diff --git a/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/pom.xml b/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/pom.xml
index 77f9c8c918..839f36534b 100644
--- a/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/pom.xml
+++ b/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/pom.xml
@@ -14,6 +14,11 @@
${basedir}/target/tomcat
+
+ com.percussion
+ perc-security-utils
+ ${project.parent.version}
+
com.percussion.deliverytier
perc-metadata-services
@@ -909,6 +914,30 @@
+
+ maven-assembly-plugin
+
+
+ create-my-bundle
+
+ single
+
+ package
+
+
+ jar-with-dependencies
+
+ delivery-tier-distribution
+ false
+
+
+ com.percussion.preinstall.MainDTSPreInstall
+
+
+
+
+
+
org.apache.maven.plugins
maven-antrun-plugin
diff --git a/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/src/main/java/com/percussion/preinstall/MainDTSPreInstall.java b/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/src/main/java/com/percussion/preinstall/MainDTSPreInstall.java
index 4e454e3760..025f2b0749 100644
--- a/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/src/main/java/com/percussion/preinstall/MainDTSPreInstall.java
+++ b/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/src/main/java/com/percussion/preinstall/MainDTSPreInstall.java
@@ -219,12 +219,14 @@ public static void extractArchive(Path archiveFile, Path destPath, String folder
}
if (entry.isDirectory()) {
- // codeql[java/zipslip] justification: ZipSlipGuard + canonical startsWith; re-review by 2027-07-31
+ // codeql[java/zipslip] justification: ZipSlipGuard + canonical startsWith; re-review by
+ // 2027-07-31
Files.createDirectory(newFile.toPath());
continue;
}
System.out.println("Creating file " + newFile);
- // codeql[java/zipslip] justification: ZipSlipGuard + canonical startsWith; re-review by 2027-07-31
+ // codeql[java/zipslip] justification: ZipSlipGuard + canonical startsWith; re-review by
+ // 2027-07-31
Files.copy(archive.getInputStream(entry), newFile.toPath());
// Preserve executable permissions for shell scripts