mirror of
https://github.com/apple/pkl.git
synced 2026-06-11 08:12:50 +02:00
Prevent --multiple-file-output-path writes from following symlinks outside the target directory (#1467)
This commit is contained in:
@@ -931,6 +931,37 @@ result = someLib.x
|
||||
.hasMessageContaining("which is outside output directory")
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisabledOnOs(OS.WINDOWS)
|
||||
fun `multiple file output throws if files are written outside the base path via symlink`() {
|
||||
val output = tempDir.resolve(".output").createDirectories()
|
||||
val outside = tempDir.resolve("outside").createDirectories()
|
||||
output.resolve("outside").createSymbolicLinkPointingTo(outside)
|
||||
|
||||
val moduleUri =
|
||||
writePklFile(
|
||||
"test.pkl",
|
||||
"""
|
||||
output {
|
||||
files {
|
||||
["outside/foo.txt"] {
|
||||
text = "bar"
|
||||
}
|
||||
}
|
||||
}
|
||||
"""
|
||||
.trimIndent(),
|
||||
)
|
||||
val options =
|
||||
CliEvaluatorOptions(
|
||||
CliBaseOptions(sourceModules = listOf(moduleUri), workingDir = tempDir),
|
||||
multipleFileOutputPath = ".output",
|
||||
)
|
||||
assertThatCode { evalToConsole(options) }
|
||||
.hasMessageStartingWith("Output file conflict:")
|
||||
.hasMessageContaining("which is outside output directory")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `multiple file output throws if file path is a directory`() {
|
||||
tempDir.resolve(".output/myDir").createDirectories()
|
||||
|
||||
Reference in New Issue
Block a user