Skip to content

Commit

Permalink
Fix - Add zip slip validation (#866)
Browse files Browse the repository at this point in the history
* Fix var names

* Fix - Add fix after rebase

* Fix - Add zip slip validation

* Fix - Add zip slip validation

* Fix - Add zip slip validation

---------

Co-authored-by: David Fadida <[email protected]>
  • Loading branch information
David-Fadida and David Fadida authored Sep 15, 2023
1 parent 102e401 commit 35bf420
Showing 1 changed file with 6 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package ml.combust.bundle.util

import java.io.{IOException, InputStream, OutputStream}
import java.nio.file.attribute.BasicFileAttributes
import java.nio.file.{FileVisitResult, Files, Path, SimpleFileVisitor}
import java.nio.file.{FileVisitResult, Files, FileSystems, Path, SimpleFileVisitor}
import java.util.Comparator
import java.util.stream.Collectors
import java.util.zip.{ZipEntry, ZipInputStream, ZipOutputStream}
Expand Down Expand Up @@ -70,6 +70,11 @@ object FileUtil {
if (entry.isDirectory) {
Files.createDirectories(filePath)
} else {
val destCanonical = dest.toRealPath()
val entryCanonical = filePath.toAbsolutePath().normalize()
if (!entryCanonical.startsWith(destCanonical + FileSystems.getDefault().getSeparator())) {
throw new Exception("Entry is outside of the target dir: " + entry.getName)
}
Using(Files.newOutputStream(filePath)) {
out => writeData(in, out)
}
Expand Down

0 comments on commit 35bf420

Please sign in to comment.