summaryrefslogtreecommitdiffhomepage
path: root/dev/Boot/src/BootFileReader.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dev/Boot/src/BootFileReader.cc')
-rw-r--r--dev/Boot/src/BootFileReader.cc31
1 files changed, 17 insertions, 14 deletions
diff --git a/dev/Boot/src/BootFileReader.cc b/dev/Boot/src/BootFileReader.cc
index eb5f80a2..e8f8772c 100644
--- a/dev/Boot/src/BootFileReader.cc
+++ b/dev/Boot/src/BootFileReader.cc
@@ -128,23 +128,26 @@ Boot::BFileReader::~BFileReader()
*/
Void Boot::BFileReader::ReadAll(SizeT readUntil, SizeT chunkToRead, UIntPtr out_address)
{
- if (mBlob == nullptr)
- {
- EfiFileInfo newPtrInfo{};
- UInt32 szInfo = 0U;
+ UInt32 szInfo = sizeof(EfiFileInfo);
- EfiGUID kFileInfoGUID = EFI_FILE_INFO_GUID;
+ EfiFileInfo newPtrInfo{};
- if (mFile->GetInfo(mFile, &kFileInfoGUID, &szInfo, &newPtrInfo) == kEfiOk)
- {
- if (newPtrInfo.FileSize < readUntil)
- readUntil = newPtrInfo.FileSize;
- else if (readUntil < 1)
- readUntil = newPtrInfo.FileSize;
+ EfiGUID kFileInfoGUID = EFI_FILE_INFO_GUID;
- mWriter.Write(L"BootZ: File size: ").Write(readUntil).Write("\r");
- }
+ if (mFile->GetInfo(mFile, &kFileInfoGUID, &szInfo, &newPtrInfo) == kEfiOk)
+ {
+ readUntil = newPtrInfo.FileSize;
+ mWriter.Write(L"BootZ: File size: ").Write(readUntil).Write("\r");
+ }
+ if (readUntil == 0)
+ {
+ mErrorCode = kNotSupported;
+ return;
+ }
+
+ if (mBlob == nullptr)
+ {
if (!out_address)
{
if (auto err = BS->AllocatePool(EfiLoaderCode, readUntil, (VoidPtr*)&mBlob) !=
@@ -160,7 +163,7 @@ Void Boot::BFileReader::ReadAll(SizeT readUntil, SizeT chunkToRead, UIntPtr out_
}
}
- mErrorCode = kNotSupported;
+ mWriter.Write(L"*** Bytes to read: ").Write(readUntil).Write(L" ***\r");
UInt64 bufSize = chunkToRead;
UInt64 szCnt = 0UL;