Safer natural earth unzip (#825)

omt-3.15-updates
Michael Barry 2024-03-03 18:47:44 -05:00 zatwierdzone przez GitHub
rodzic 40e64a2fd3
commit 9f0f513dd7
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
1 zmienionych plików z 5 dodań i 2 usunięć

Wyświetl plik

@ -15,7 +15,6 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
@ -101,10 +100,14 @@ public class NaturalEarthReader extends SimpleReader<SimpleFeature> {
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("No .sqlite file found inside " + path));
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);
if (!keepUnzipped || FileUtils.isNewer(path, 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) {
extracted.toFile().deleteOnExit();