in src/main/java/org/apache/maven/buildcache/CacheUtils.java [180:199]
public static void unzip(Path zip, Path out) throws IOException {
try (ZipInputStream zis = new ZipInputStream(Files.newInputStream(zip))) {
ZipEntry entry = zis.getNextEntry();
while (entry != null) {
Path file = out.resolve(entry.getName());
if (!file.normalize().startsWith(out.normalize())) {
throw new RuntimeException("Bad zip entry");
}
if (entry.isDirectory()) {
Files.createDirectory(file);
} else {
Path parent = file.getParent();
Files.createDirectories(parent);
Files.copy(zis, file);
}
Files.setLastModifiedTime(file, FileTime.fromMillis(entry.getTime()));
entry = zis.getNextEntry();
}
}
}