Fix #354, make jar mods and patch files in general more resilient.
This commit is contained in:
parent
ff06489fed
commit
40c238442f
@ -85,7 +85,8 @@ bool InstanceVersion::remove(const int index)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if(!QFile::remove(VersionPatches.at(index)->getPatchFilename()))
|
||||
auto toDelete = VersionPatches.at(index)->getPatchFilename();
|
||||
if(!QFile::remove(toDelete))
|
||||
return false;
|
||||
beginRemoveRows(QModelIndex(), index, index);
|
||||
VersionPatches.removeAt(index);
|
||||
@ -504,8 +505,10 @@ void InstanceVersion::installJarModByFilename(QString filepath)
|
||||
f->name = target_name;
|
||||
f->fileId = target_id;
|
||||
f->order = getFreeOrderNumber();
|
||||
QString patchFileName = PathCombine(patchDir, target_id + ".json");
|
||||
f->filename = patchFileName;
|
||||
|
||||
QFile file(PathCombine(patchDir, target_id + ".json"));
|
||||
QFile file(patchFileName);
|
||||
if (!file.open(QFile::WriteOnly))
|
||||
{
|
||||
QLOG_ERROR() << "Error opening" << file.fileName()
|
||||
|
@ -111,8 +111,14 @@ void VersionBuilder::readInstancePatches()
|
||||
continue;
|
||||
// parse the file
|
||||
QString filename = patches.absoluteFilePath(id + ".json");
|
||||
QFileInfo finfo(filename);
|
||||
if(!finfo.exists())
|
||||
{
|
||||
QLOG_INFO() << "Patch file " << filename << " was deleted by external means...";
|
||||
continue;
|
||||
}
|
||||
QLOG_INFO() << "Reading" << filename << "by user order";
|
||||
auto file = parseJsonFile(QFileInfo(filename), false);
|
||||
auto file = parseJsonFile(finfo, false);
|
||||
// sanity check. prevent tampering with files.
|
||||
if (file->fileId != id)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user