imagewriter: Resolve TOCTOU in getFilteredOSList

This commit is contained in:
Tom Dewey 2023-11-09 15:50:05 +00:00 committed by Tom Dewey
parent fc2b67a20c
commit aeb4ceb73f

View file

@ -533,22 +533,24 @@ void ImageWriter::handleNetworkRequestFinished(QNetworkReply *data) {
} }
QByteArray ImageWriter::getFilteredOSlist() { QByteArray ImageWriter::getFilteredOSlist() {
QJsonArray referenceArray = {}; QJsonArray reference_os_list_array = {};
QJsonObject referenceImagerMeta = {}; QJsonObject reference_imager_metadata = {};
if (!_completeOsList.isEmpty()) { {
std::lock_guard<std::mutex> lock(_deviceListMutationMutex); std::lock_guard<std::mutex> lock(_deviceListMutationMutex);
referenceArray = _completeOsList.object()["os_list"].toArray(); if (!_completeOsList.isEmpty()) {
referenceImagerMeta = _completeOsList.object()["imager"].toObject(); reference_os_list_array = _completeOsList.object()["os_list"].toArray();
reference_imager_metadata = _completeOsList.object()["imager"].toObject();
}
} }
referenceArray.append(QJsonObject({ reference_os_list_array.append(QJsonObject({
{"name", tr("Erase")}, {"name", tr("Erase")},
{"description", tr("Format card as FAT32")}, {"description", tr("Format card as FAT32")},
{"icon", "icons/erase.png"}, {"icon", "icons/erase.png"},
{"url", "internal://format"}, {"url", "internal://format"},
})); }));
referenceArray.append(QJsonObject({ reference_os_list_array.append(QJsonObject({
{"name", tr("Use custom")}, {"name", tr("Use custom")},
{"description", tr("Select a custom .img from your computer")}, {"description", tr("Select a custom .img from your computer")},
{"icon", "icons/use_custom.png"}, {"icon", "icons/use_custom.png"},
@ -557,8 +559,8 @@ QByteArray ImageWriter::getFilteredOSlist() {
return QJsonDocument( return QJsonDocument(
QJsonObject({ QJsonObject({
{"imager", referenceImagerMeta}, {"imager", reference_imager_metadata},
{"os_list", referenceArray}, {"os_list", reference_os_list_array},
} }
)).toJson(); )).toJson();
} }