prevent importing bogus files
This commit is contained in:
parent
59b070214c
commit
be3c42d7b4
|
@ -41,6 +41,7 @@ import java.util.Random;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import net.lingala.zip4j.*;
|
import net.lingala.zip4j.*;
|
||||||
import net.lingala.zip4j.exception.ZipException;
|
import net.lingala.zip4j.exception.ZipException;
|
||||||
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import static java.nio.file.StandardCopyOption.*;
|
import static java.nio.file.StandardCopyOption.*;
|
||||||
|
|
||||||
|
@ -365,9 +366,10 @@ public class MissPiggy implements ActionListener {
|
||||||
File selectedFile = fileChooser.getSelectedFile();
|
File selectedFile = fileChooser.getSelectedFile();
|
||||||
System.out.println("Importing selected mod file \"" + selectedFile.getName() + "\"");
|
System.out.println("Importing selected mod file \"" + selectedFile.getName() + "\"");
|
||||||
|
|
||||||
ZipFile zipImporterHandler = new ZipFile(selectedFile.getPath());
|
ZipFile zipImporterHandler = new ZipFile(selectedFile.getAbsolutePath());
|
||||||
if (zipImporterHandler.isValidZipFile()) {
|
if (zipImporterHandler.isValidZipFile()) {
|
||||||
try {
|
try {
|
||||||
|
new JSONObject(new ZipFile(selectedFile.getAbsolutePath()).getComment()); // intentionally trigger exception if file is random BS
|
||||||
Path importDestination = Paths.get(System.getProperty("user.home") + "/.firestar/mods/"
|
Path importDestination = Paths.get(System.getProperty("user.home") + "/.firestar/mods/"
|
||||||
+ selectedFile.getName() + "_" + Main.Mods.size() + ".zip");
|
+ selectedFile.getName() + "_" + Main.Mods.size() + ".zip");
|
||||||
Files.copy(Paths.get(selectedFile.getPath()), importDestination, StandardCopyOption.REPLACE_EXISTING);
|
Files.copy(Paths.get(selectedFile.getPath()), importDestination, StandardCopyOption.REPLACE_EXISTING);
|
||||||
|
@ -380,13 +382,16 @@ public class MissPiggy implements ActionListener {
|
||||||
|
|
||||||
InitializeModListStructure();
|
InitializeModListStructure();
|
||||||
InitializeModListInGUI();
|
InitializeModListInGUI();
|
||||||
|
} catch (JSONException e) {
|
||||||
|
System.out.println("ERROR: File is not a valid ZIP archive with mod data. Aborting.");
|
||||||
|
JOptionPane.showMessageDialog(frame, "Whoops, that's not a valid mod file.", "Error", JOptionPane.ERROR_MESSAGE);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println(e.getMessage());
|
System.out.println(e.getMessage());
|
||||||
JOptionPane.showMessageDialog(frame, "An error has occured.\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
|
JOptionPane.showMessageDialog(frame, "An error has occured.\n" + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
System.out.println("ERROR: File is not a valid ZIP archive. Aborting.");
|
System.out.println("ERROR: File is not a valid ZIP archive with mod data. Aborting.");
|
||||||
JOptionPane.showMessageDialog(frame, "Whoops, that's not a valid ZIP archive.", "Error", JOptionPane.ERROR_MESSAGE);
|
JOptionPane.showMessageDialog(frame, "Whoops, that's not a valid mod file.", "Error", JOptionPane.ERROR_MESSAGE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user