mirror of
https://github.com/LongSoft/UEFITool.git
synced 2024-11-22 07:58:22 +08:00
Version 0.16.5
- solved a bug in reconstructFile while reconstructing raw files with volumes inside - solved a bug in reconstructRegion, UEFI 2.0 capsule header was lost during reconstruction
This commit is contained in:
parent
e660b7ecea
commit
f65bebb398
@ -1927,6 +1927,7 @@ UINT8 FfsEngine::reconstructRegion(const QModelIndex& index, QByteArray& reconst
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Reconstruction successful
|
// Reconstruction successful
|
||||||
|
reconstructed = model->header(index).append(reconstructed);
|
||||||
return ERR_SUCCESS;
|
return ERR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2272,35 +2273,44 @@ UINT8 FfsEngine::reconstructFile(const QModelIndex& index, const UINT8 revision,
|
|||||||
if (model->rowCount(index)) {
|
if (model->rowCount(index)) {
|
||||||
reconstructed.clear();
|
reconstructed.clear();
|
||||||
// Construct new file body
|
// Construct new file body
|
||||||
UINT32 offset = 0;
|
// File contains raw data, must be parsed as region
|
||||||
|
if (model->subtype(index) == EFI_FV_FILETYPE_ALL || model->subtype(index) == EFI_FV_FILETYPE_RAW) {
|
||||||
|
result = reconstructRegion(index, reconstructed);
|
||||||
|
if (result)
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
// File contains sections
|
||||||
|
else {
|
||||||
|
UINT32 offset = 0;
|
||||||
|
|
||||||
for (int i = 0; i < model->rowCount(index); i++) {
|
for (int i = 0; i < model->rowCount(index); i++) {
|
||||||
// Align to 4 byte boundary
|
// Align to 4 byte boundary
|
||||||
UINT8 alignment = offset % 4;
|
UINT8 alignment = offset % 4;
|
||||||
if (alignment) {
|
if (alignment) {
|
||||||
alignment = 4 - alignment;
|
alignment = 4 - alignment;
|
||||||
offset += alignment;
|
offset += alignment;
|
||||||
reconstructed.append(QByteArray(alignment, '\x00'));
|
reconstructed.append(QByteArray(alignment, '\x00'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate section base
|
||||||
|
UINT32 sectionBase = base ? base + sizeof(EFI_FFS_FILE_HEADER) + offset : 0;
|
||||||
|
|
||||||
|
// Reconstruct section
|
||||||
|
QByteArray section;
|
||||||
|
result = reconstructSection(index.child(i, 0), sectionBase, section);
|
||||||
|
if (result)
|
||||||
|
return result;
|
||||||
|
|
||||||
|
// Check for empty section
|
||||||
|
if (section.isEmpty())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Append current section to new file body
|
||||||
|
reconstructed.append(section);
|
||||||
|
|
||||||
|
// Change current file offset
|
||||||
|
offset += section.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate section base
|
|
||||||
UINT32 sectionBase = base ? base + sizeof(EFI_FFS_FILE_HEADER) + offset : 0;
|
|
||||||
|
|
||||||
// Reconstruct section
|
|
||||||
QByteArray section;
|
|
||||||
result = reconstructSection(index.child(i, 0), sectionBase, section);
|
|
||||||
if (result)
|
|
||||||
return result;
|
|
||||||
|
|
||||||
// Check for empty section
|
|
||||||
if (section.isEmpty())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// Append current section to new file body
|
|
||||||
reconstructed.append(section);
|
|
||||||
|
|
||||||
// Change current file offset
|
|
||||||
offset += section.size();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Correct file size
|
// Correct file size
|
||||||
|
48
uefitool.ui
48
uefitool.ui
@ -7,7 +7,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>800</width>
|
<width>800</width>
|
||||||
<height>500</height>
|
<height>600</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@ -20,7 +20,7 @@
|
|||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>UEFITool 0.16.4</string>
|
<string>UEFITool 0.16.5</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="centralWidget">
|
<widget class="QWidget" name="centralWidget">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@ -33,16 +33,7 @@
|
|||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="leftMargin">
|
<property name="margin">
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
@ -62,16 +53,7 @@
|
|||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="leftMargin">
|
<property name="margin">
|
||||||
<number>5</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>5</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>5</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>5</number>
|
<number>5</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
@ -109,16 +91,7 @@
|
|||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="leftMargin">
|
<property name="margin">
|
||||||
<number>5</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>5</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>5</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>5</number>
|
<number>5</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
@ -148,16 +121,7 @@
|
|||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="leftMargin">
|
<property name="margin">
|
||||||
<number>5</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>5</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>5</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>5</number>
|
<number>5</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
|
Loading…
Reference in New Issue
Block a user