efegokdemir opened a new pull request, #308: URL: https://github.com/apache/maven-remote-resources-plugin/pull/308
## Summary\n\n- Prevent remote bundle resource names from escaping the configured output directory.\n- Reject absolute paths and canonical paths outside the output directory before creating directories or copying resources.\n- Add regression coverage for traversal, absolute, and valid nested resource paths.\n\n## Testing\n\n- [INFO] Scanning for projects... [INFO] [INFO] -------< org.apache.maven.plugins:maven-remote-resources-plugin >------- [INFO] Building Apache Maven Remote Resources Plugin 3.3.1-SNAPSHOT [INFO] from pom.xml [INFO] ----------------------------[ maven-plugin ]---------------------------- [INFO] [INFO] --- enforcer:3.6.3:enforce (enforce-bytecode-version) @ maven-remote-resources-plugin --- [INFO] Rule 0: org.codehaus.mojo.extraenforcer.dependencies.EnforceBytecodeVersion passed [INFO] [INFO] --- enforcer:3.6.3:enforce (enforce-maven-version) @ maven-remote-resources-plugin --- [INFO] Rule 0: org.apache.maven.enforcer.rules.version.RequireMavenVersion passed [INFO] [INFO] --- enforcer:3.6.3:enforce (enforce-java-version) @ maven-remote-resources-plugin --- [INFO] Rule 0: org.apache.maven.enforcer.rules.version.RequireJavaVersion passed [INFO] [INFO] --- enforcer:3.6.3:enforce (ensure-no-container-api) @ maven-remote-resources-plugin --- [INFO] Rule 0: org.apache.maven.enforcer.rules.dependency.BannedDependencies passed [INFO] [INFO] --- plugin:3.16.0:helpmojo (generate-helpmojo) @ maven-remote-resources-plugin --- [INFO] [INFO] --- modello:2.8.1:xpp3-writer (remote-resources) @ maven-remote-resources-plugin --- [INFO] outputDirectory: /private/tmp/maven-remote-resources-265/target/generated-sources/modello [INFO] Working on model: src/main/mdo/remote-resources.mdo [INFO] Generating current version: 1.2.0 [INFO] [INFO] --- modello:2.8.1:java (remote-resources) @ maven-remote-resources-plugin --- [INFO] outputDirectory: /private/tmp/maven-remote-resources-265/target/generated-sources/modello [INFO] Working on model: src/main/mdo/remote-resources.mdo [INFO] Generating current version: 1.2.0 [INFO] [INFO] --- modello:2.8.1:xpp3-reader (remote-resources) @ maven-remote-resources-plugin --- [INFO] outputDirectory: /private/tmp/maven-remote-resources-265/target/generated-sources/modello [INFO] Working on model: src/main/mdo/remote-resources.mdo [INFO] Generating current version: 1.2.0 [INFO] [INFO] --- modello:2.8.1:xpp3-writer (supplemental-models) @ maven-remote-resources-plugin --- [INFO] outputDirectory: /private/tmp/maven-remote-resources-265/target/generated-sources/modello [INFO] Working on model: src/main/mdo/supplemental-model.mdo [INFO] Generating current version: 1.0.0 [INFO] [INFO] --- modello:2.8.1:java (supplemental-models) @ maven-remote-resources-plugin --- [INFO] outputDirectory: /private/tmp/maven-remote-resources-265/target/generated-sources/modello [INFO] Working on model: src/main/mdo/supplemental-model.mdo [INFO] Generating current version: 1.0.0 [INFO] [INFO] --- modello:2.8.1:xpp3-reader (supplemental-models) @ maven-remote-resources-plugin --- [INFO] outputDirectory: /private/tmp/maven-remote-resources-265/target/generated-sources/modello [INFO] Working on model: src/main/mdo/supplemental-model.mdo [INFO] Generating current version: 1.0.0 [INFO] [INFO] --- checkstyle:3.6.0:check (checkstyle-check) @ maven-remote-resources-plugin --- [INFO] You have 0 Checkstyle violations. [INFO] [INFO] --- spotless:3.10.2:apply (default) @ maven-remote-resources-plugin --- [INFO] Spotless apply skipped [INFO] [INFO] --- remote-resources:3.3.0:process (process-resource-bundles) @ maven-remote-resources-plugin --- [INFO] Preparing remote bundle org.apache.apache.resources:apache-jar-resource-bundle:1.8 [INFO] Copying 3 resources from 1 bundle. [INFO] [INFO] --- resources:3.5.0:resources (default-resources) @ maven-remote-resources-plugin --- [INFO] skip non existing resourceDirectory /private/tmp/maven-remote-resources-265/src/main/resources [INFO] Copying 3 resources from target/maven-shared-archive-resources to target/classes [INFO] [INFO] --- apache-rat:0.18:check (rat-check) @ maven-remote-resources-plugin --- [WARNING] Parameter 'excludes' is deprecated: Deprecated for removal since 0.17: Use <inputExclude> instead. [WARNING] Use of deprecated option 'exclude'. Deprecated for removal since 0.17: Use <inputExclude> instead. [INFO] No issues found. [INFO] [INFO] --- compiler:3.16.0:compile (default-compile) @ maven-remote-resources-plugin --- [INFO] Nothing to compile - all classes are up to date. [INFO] [INFO] --- plugin:3.16.0:descriptor (default-descriptor) @ maven-remote-resources-plugin --- [INFO] Using 'UTF-8' encoding to read mojo source files. [INFO] java-annotations mojo extractor found 4 mojo descriptors. [INFO] [INFO] --- resources:3.5.0:testResources (default-testResources) @ maven-remote-resources-plugin --- [INFO] Copying 7 resources from src/test/resources to target/test-classes [INFO] Copying 3 resources from target/maven-shared-archive-resources to target/test-classes [INFO] [INFO] --- compiler:3.16.0:testCompile (default-testCompile) @ maven-remote-resources-plugin --- [INFO] Nothing to compile - all classes are up to date. [INFO] [INFO] --- surefire:3.6.0:test (default-test) @ maven-remote-resources-plugin --- [INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider [INFO] [INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running org.apache.maven.plugin.resources.remote.RemoteResourcesMojoTest [info] Writing META-INF/maven/remote-resources.xml descriptor with 1 entry [info] Preparing remote bundle test:test:1.2 [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test/test/1.2/test-1.2.jar!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 UTF-8.bin.vm [info] Copying 1 resource from 1 bundle. [warn] sourceEncoding has not been set; using platform encoding UTF-8; i.e. build is platform dependent! [info] Writing META-INF/maven/remote-resources.xml descriptor with 1 entry [info] Preparing remote bundle test:test:1.1 [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test/test/1.1/test-1.1.jar!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 FILTER.txt.vm [info] Copying 1 resource from 1 bundle. [debug] PROJECTS: [] [info] Preparing remote bundle test:test:1.1 [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test/test/1.1/test-1.1.jar!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 FILTER.txt.vm [info] Copying 1 resource from 1 bundle. [debug] PROJECTS: [] [warn] sourceEncoding has not been set; using platform encoding UTF-8; i.e. build is platform dependent! [info] Writing META-INF/maven/remote-resources.xml descriptor with 1 entry [info] Preparing remote bundle test-filtered-bundles:test-filtered-bundles:2 [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test-filtered-bundles/test-filtered-bundles/2/test-filtered-bundles-2.jar!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 PROPERTIES.txt.vm [info] Copying 1 resource from 1 bundle. [info] Preparing remote bundle test-filtered-bundles:test-filtered-bundles:2 [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test-filtered-bundles/test-filtered-bundles/2/test-filtered-bundles-2.jar!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 PROPERTIES.txt.vm [info] Copying 1 resource from 1 bundle. [warn] sourceEncoding has not been set; using platform encoding UTF-8; i.e. build is platform dependent! [info] Writing META-INF/maven/remote-resources.xml descriptor with 1 entry [info] Preparing remote bundle test:test:1.0:war [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test/test/1.0/test-1.0.war!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 SIMPLE.txt [info] Copying 1 resource from 1 bundle. [warn] sourceEncoding has not been set; using platform encoding UTF-8; i.e. build is platform dependent! [info] Writing META-INF/maven/remote-resources.xml descriptor with 1 entry [info] Preparing remote bundle test:test:1.0 [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test/test/1.0/test-1.0.jar!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 SIMPLE.txt [info] Copying 1 resource from 1 bundle. [info] Writing META-INF/maven/remote-resources.xml descriptor with 1 entry [info] Preparing remote bundle test:test:1.3 [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test/test/1.3/test-1.3.jar!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 ISO-8859-1.bin.vm [info] Copying 1 resource from 1 bundle. [warn] sourceEncoding has not been set; using platform encoding UTF-8; i.e. build is platform dependent! [info] Writing META-INF/maven/remote-resources.xml descriptor with 1 entry [info] Preparing remote bundle test:test:1.0:jar:test [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test/test/1.0/test-1.0-test.jar!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 SIMPLE.txt [info] Copying 1 resource from 1 bundle. [debug] Supplemental data models won't be loaded. No models specified. [info] Copying 0 resource from 0 bundle. [warn] sourceEncoding has not been set; using platform encoding UTF-8; i.e. build is platform dependent! [info] Writing META-INF/maven/remote-resources.xml descriptor with 5 entries [INFO] Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.781 s -- in org.apache.maven.plugin.resources.remote.RemoteResourcesMojoTest [INFO] [INFO] Results: [INFO] [INFO] Tests run: 12, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 8.305 s [INFO] Finished at: 2026-09-26T12:38:28+03:00 [INFO] ------------------------------------------------------------------------ — 12 tests passed\n- [INFO] Scanning for projects... [INFO] [INFO] -------< org.apache.maven.plugins:maven-remote-resources-plugin >------- [INFO] Building Apache Maven Remote Resources Plugin 3.3.1-SNAPSHOT [INFO] from pom.xml [INFO] ----------------------------[ maven-plugin ]---------------------------- [INFO] [INFO] --- enforcer:3.6.3:enforce (enforce-bytecode-version) @ maven-remote-resources-plugin --- [INFO] Rule 0: org.codehaus.mojo.extraenforcer.dependencies.EnforceBytecodeVersion passed [INFO] [INFO] --- enforcer:3.6.3:enforce (enforce-maven-version) @ maven-remote-resources-plugin --- [INFO] Rule 0: org.apache.maven.enforcer.rules.version.RequireMavenVersion passed [INFO] [INFO] --- enforcer:3.6.3:enforce (enforce-java-version) @ maven-remote-resources-plugin --- [INFO] Rule 0: org.apache.maven.enforcer.rules.version.RequireJavaVersion passed [INFO] [INFO] --- enforcer:3.6.3:enforce (ensure-no-container-api) @ maven-remote-resources-plugin --- [INFO] Rule 0: org.apache.maven.enforcer.rules.dependency.BannedDependencies passed [INFO] [INFO] --- plugin:3.16.0:helpmojo (generate-helpmojo) @ maven-remote-resources-plugin --- [INFO] [INFO] --- modello:2.8.1:xpp3-writer (remote-resources) @ maven-remote-resources-plugin --- [INFO] outputDirectory: /private/tmp/maven-remote-resources-265/target/generated-sources/modello [INFO] Working on model: src/main/mdo/remote-resources.mdo [INFO] Generating current version: 1.2.0 [INFO] [INFO] --- modello:2.8.1:java (remote-resources) @ maven-remote-resources-plugin --- [INFO] outputDirectory: /private/tmp/maven-remote-resources-265/target/generated-sources/modello [INFO] Working on model: src/main/mdo/remote-resources.mdo [INFO] Generating current version: 1.2.0 [INFO] [INFO] --- modello:2.8.1:xpp3-reader (remote-resources) @ maven-remote-resources-plugin --- [INFO] outputDirectory: /private/tmp/maven-remote-resources-265/target/generated-sources/modello [INFO] Working on model: src/main/mdo/remote-resources.mdo [INFO] Generating current version: 1.2.0 [INFO] [INFO] --- modello:2.8.1:xpp3-writer (supplemental-models) @ maven-remote-resources-plugin --- [INFO] outputDirectory: /private/tmp/maven-remote-resources-265/target/generated-sources/modello [INFO] Working on model: src/main/mdo/supplemental-model.mdo [INFO] Generating current version: 1.0.0 [INFO] [INFO] --- modello:2.8.1:java (supplemental-models) @ maven-remote-resources-plugin --- [INFO] outputDirectory: /private/tmp/maven-remote-resources-265/target/generated-sources/modello [INFO] Working on model: src/main/mdo/supplemental-model.mdo [INFO] Generating current version: 1.0.0 [INFO] [INFO] --- modello:2.8.1:xpp3-reader (supplemental-models) @ maven-remote-resources-plugin --- [INFO] outputDirectory: /private/tmp/maven-remote-resources-265/target/generated-sources/modello [INFO] Working on model: src/main/mdo/supplemental-model.mdo [INFO] Generating current version: 1.0.0 [INFO] [INFO] --- checkstyle:3.6.0:check (checkstyle-check) @ maven-remote-resources-plugin --- [INFO] You have 0 Checkstyle violations. [INFO] [INFO] --- spotless:3.10.2:apply (default) @ maven-remote-resources-plugin --- [INFO] Spotless apply skipped [INFO] [INFO] --- remote-resources:3.3.0:process (process-resource-bundles) @ maven-remote-resources-plugin --- [INFO] Preparing remote bundle org.apache.apache.resources:apache-jar-resource-bundle:1.8 [INFO] Copying 3 resources from 1 bundle. [INFO] [INFO] --- resources:3.5.0:resources (default-resources) @ maven-remote-resources-plugin --- [INFO] skip non existing resourceDirectory /private/tmp/maven-remote-resources-265/src/main/resources [INFO] Copying 3 resources from target/maven-shared-archive-resources to target/classes [INFO] [INFO] --- apache-rat:0.18:check (rat-check) @ maven-remote-resources-plugin --- [WARNING] Parameter 'excludes' is deprecated: Deprecated for removal since 0.17: Use <inputExclude> instead. [WARNING] Use of deprecated option 'exclude'. Deprecated for removal since 0.17: Use <inputExclude> instead. [INFO] No issues found. [INFO] [INFO] --- compiler:3.16.0:compile (default-compile) @ maven-remote-resources-plugin --- [INFO] Nothing to compile - all classes are up to date. [INFO] [INFO] --- plugin:3.16.0:descriptor (default-descriptor) @ maven-remote-resources-plugin --- [INFO] Using 'UTF-8' encoding to read mojo source files. [INFO] java-annotations mojo extractor found 4 mojo descriptors. [INFO] [INFO] --- resources:3.5.0:testResources (default-testResources) @ maven-remote-resources-plugin --- [INFO] Copying 7 resources from src/test/resources to target/test-classes [INFO] Copying 3 resources from target/maven-shared-archive-resources to target/test-classes [INFO] [INFO] --- compiler:3.16.0:testCompile (default-testCompile) @ maven-remote-resources-plugin --- [INFO] Nothing to compile - all classes are up to date. [INFO] [INFO] --- surefire:3.6.0:test (default-test) @ maven-remote-resources-plugin --- [INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider [INFO] [INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running org.apache.maven.plugin.resources.remote.RemoteResourcesMojoTest [info] Writing META-INF/maven/remote-resources.xml descriptor with 1 entry [info] Preparing remote bundle test:test:1.2 [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test/test/1.2/test-1.2.jar!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 UTF-8.bin.vm [info] Copying 1 resource from 1 bundle. [warn] sourceEncoding has not been set; using platform encoding UTF-8; i.e. build is platform dependent! [info] Writing META-INF/maven/remote-resources.xml descriptor with 1 entry [info] Preparing remote bundle test:test:1.1 [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test/test/1.1/test-1.1.jar!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 FILTER.txt.vm [info] Copying 1 resource from 1 bundle. [debug] PROJECTS: [] [info] Preparing remote bundle test:test:1.1 [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test/test/1.1/test-1.1.jar!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 FILTER.txt.vm [info] Copying 1 resource from 1 bundle. [debug] PROJECTS: [] [warn] sourceEncoding has not been set; using platform encoding UTF-8; i.e. build is platform dependent! [info] Writing META-INF/maven/remote-resources.xml descriptor with 1 entry [info] Preparing remote bundle test-filtered-bundles:test-filtered-bundles:2 [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test-filtered-bundles/test-filtered-bundles/2/test-filtered-bundles-2.jar!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 PROPERTIES.txt.vm [info] Copying 1 resource from 1 bundle. [info] Preparing remote bundle test-filtered-bundles:test-filtered-bundles:2 [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test-filtered-bundles/test-filtered-bundles/2/test-filtered-bundles-2.jar!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 PROPERTIES.txt.vm [info] Copying 1 resource from 1 bundle. [warn] sourceEncoding has not been set; using platform encoding UTF-8; i.e. build is platform dependent! [info] Writing META-INF/maven/remote-resources.xml descriptor with 1 entry [info] Preparing remote bundle test:test:1.0:war [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test/test/1.0/test-1.0.war!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 SIMPLE.txt [info] Copying 1 resource from 1 bundle. [warn] sourceEncoding has not been set; using platform encoding UTF-8; i.e. build is platform dependent! [info] Writing META-INF/maven/remote-resources.xml descriptor with 1 entry [info] Preparing remote bundle test:test:1.0 [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test/test/1.0/test-1.0.jar!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 SIMPLE.txt [info] Copying 1 resource from 1 bundle. [info] Writing META-INF/maven/remote-resources.xml descriptor with 1 entry [info] Preparing remote bundle test:test:1.3 [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test/test/1.3/test-1.3.jar!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 ISO-8859-1.bin.vm [info] Copying 1 resource from 1 bundle. [warn] sourceEncoding has not been set; using platform encoding UTF-8; i.e. build is platform dependent! [info] Writing META-INF/maven/remote-resources.xml descriptor with 1 entry [info] Preparing remote bundle test:test:1.0:jar:test [debug] Supplemental data models won't be loaded. No models specified. [debug] processResourceBundle on bundle#1 jar:file:/private/tmp/maven-remote-resources-265/target/local-repo/test/test/1.0/test-1.0-test.jar!/META-INF/maven/remote-resources.xml [debug] bundle#1 resource#1 SIMPLE.txt [info] Copying 1 resource from 1 bundle. [debug] Supplemental data models won't be loaded. No models specified. [info] Copying 0 resource from 0 bundle. [warn] sourceEncoding has not been set; using platform encoding UTF-8; i.e. build is platform dependent! [info] Writing META-INF/maven/remote-resources.xml descriptor with 5 entries [INFO] Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.815 s -- in org.apache.maven.plugin.resources.remote.RemoteResourcesMojoTest [INFO] [INFO] Results: [INFO] [INFO] Tests run: 12, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] [INFO] --- jar:3.5.1:jar (default-jar) @ maven-remote-resources-plugin --- [INFO] [INFO] --- dependency:3.11.0:analyze-only (analyze) @ maven-remote-resources-plugin --- [INFO] No dependency problems found [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 9.490 s [INFO] Finished at: 2026-09-26T12:38:39+03:00 [INFO] ------------------------------------------------------------------------ — passed\n- Checkstyle, RAT, dependency analysis — passed\n- — passed\n\nThe full integration-test profile is environment-limited locally by existing Groovy/JDK class-file incompatibility (major version 71). Spotless is also unavailable with the installed JDK 8 formatter runtime.\n\nFixes #265 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
