diff --git a/UEFITool/Info.plist b/UEFITool/Info.plist index bacb78f..b34bd7a 100644 --- a/UEFITool/Info.plist +++ b/UEFITool/Info.plist @@ -2,32 +2,32 @@ - NSPrincipalClass - NSApplication - CFBundleIconFile - uefitool - CFBundlePackageType - APPL - CFBundleGetInfoString - UEFITool NE - CFBundleSignature - ???? - CFBundleExecutable - UEFITool - CFBundleIdentifier - org.longsoft.UEFITool - CFBundleDocumentTypes - - - CFBundleTypeExtensions - - * - - CFBundleTypeRole - Viewer - LSHandlerRank - None - - + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + * + + CFBundleTypeRole + Viewer + LSHandlerRank + None + + + CFBundleExecutable + UEFITool + CFBundleGetInfoString + UEFITool NE + CFBundleIconFile + uefitool + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundlePackageType + APPL + CFBundleSignature + ???? + NSPrincipalClass + NSApplication diff --git a/common/meparser.cpp b/common/meparser.cpp index c53c2c6..bb93af5 100755 --- a/common/meparser.cpp +++ b/common/meparser.cpp @@ -171,7 +171,7 @@ USTATUS MeParser::parseFptRegion(const UByteArray & region, const UModelIndex & const FPT_HEADER_ENTRY* ptEntry = firstPtEntry + i; // Get info - name = usprintf("%c%c%c%c", ptEntry->Name[0], ptEntry->Name[1], ptEntry->Name[2], ptEntry->Name[3]); + name = visibleAsciiOrHex((UINT8*)ptEntry->Name, 4); info = usprintf("Full size: %Xh (%u)\nPartition offset: %Xh\nPartition length: %Xh\nPartition type: %02Xh", sizeof(FPT_HEADER_ENTRY), sizeof(FPT_HEADER_ENTRY), ptEntry->Offset, @@ -275,7 +275,7 @@ make_partition_table_consistent: if (partitions[i].type == Types::FptPartition) { UModelIndex partitionIndex; // Get info - name = usprintf("%c%c%c%c", partitions[i].ptEntry.Name[0], partitions[i].ptEntry.Name[1], partitions[i].ptEntry.Name[2], partitions[i].ptEntry.Name[3]); + name = visibleAsciiOrHex((UINT8*) partitions[i].ptEntry.Name, 4); info = usprintf("Full size: %Xh (%u)\nPartition type: %02Xh\n", partition.size(), partition.size(), partitions[i].ptEntry.Type); diff --git a/common/utility.cpp b/common/utility.cpp index b0d2df4..3e9f418 100755 --- a/common/utility.cpp +++ b/common/utility.cpp @@ -23,6 +23,32 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include "LZMA/LzmaCompress.h" #include "LZMA/LzmaDecompress.h" +// Returns bytes as string when all bytes are ascii visible, hex representation otherwise +UString visibleAsciiOrHex(UINT8* bytes, UINT32 length) +{ + bool ascii = true; + UString asciiString; + UString hexString; + + for (UINT32 i = 0; i < length; i++) { + hexString += usprintf("%02X", bytes[i]); + + if (bytes[i] < '\x20' || bytes[i] > '\x7E') { // Explicit ascii codes to avoid locale dependency + ascii = false; + } + + if (ascii) { + asciiString += usprintf("%c", bytes[i]); + } + } + + if (ascii) { + return asciiString; + } + + return hexString; +} + // Returns unique name string based for tree item UString uniqueItemName(const UModelIndex & index) { diff --git a/common/utility.h b/common/utility.h index 863fb0a..f871953 100755 --- a/common/utility.h +++ b/common/utility.h @@ -23,6 +23,9 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include "treemodel.h" #include "parsingdata.h" +// Returns bytes as string when all bytes are ascii visible, hex representation otherwise +UString visibleAsciiOrHex(UINT8* bytes, UINT32 length); + // Returns unique name for tree item UString uniqueItemName(const UModelIndex & index);