kopia lustrzana https://github.com/onthegomap/planetiler
Safer natural earth unzip (#825)
rodzic
40e64a2fd3
commit
9f0f513dd7
|
@ -15,7 +15,6 @@ import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.FileSystems;
|
import java.nio.file.FileSystems;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.StandardCopyOption;
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.DriverManager;
|
import java.sql.DriverManager;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
@ -101,10 +100,14 @@ public class NaturalEarthReader extends SimpleReader<SimpleFeature> {
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElseThrow(() -> new IllegalArgumentException("No .sqlite file found inside " + path));
|
.orElseThrow(() -> new IllegalArgumentException("No .sqlite file found inside " + path));
|
||||||
extracted = unzippedDir.resolve(URLEncoder.encode(zipEntry.toString(), StandardCharsets.UTF_8));
|
extracted = unzippedDir.resolve(URLEncoder.encode(zipEntry.toString(), StandardCharsets.UTF_8));
|
||||||
|
if (!extracted.startsWith(unzippedDir)) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"Zip file tried to extract child outside of folder: " + zipEntry.getFileName());
|
||||||
|
}
|
||||||
FileUtils.createParentDirectories(extracted);
|
FileUtils.createParentDirectories(extracted);
|
||||||
if (!keepUnzipped || FileUtils.isNewer(path, extracted)) {
|
if (!keepUnzipped || FileUtils.isNewer(path, extracted)) {
|
||||||
LOGGER.info("unzipping {} to {}", path.toAbsolutePath(), extracted);
|
LOGGER.info("unzipping {} to {}", path.toAbsolutePath(), extracted);
|
||||||
Files.copy(Files.newInputStream(zipEntry), extracted, StandardCopyOption.REPLACE_EXISTING);
|
FileUtils.safeCopy(Files.newInputStream(zipEntry), extracted);
|
||||||
}
|
}
|
||||||
if (!keepUnzipped) {
|
if (!keepUnzipped) {
|
||||||
extracted.toFile().deleteOnExit();
|
extracted.toFile().deleteOnExit();
|
||||||
|
|
Ładowanie…
Reference in New Issue