From 179efe5d69214ba95cdcb9dcbc5845a9f0114146 Mon Sep 17 00:00:00 2001 From: Michael Kubacki Date: Tue, 8 Nov 2022 12:17:59 -0500 Subject: [PATCH] BaseTools: Fix wrong type of arguments to formatting functions Fixes issues found with the cpp/wrong-type-format-argument CodeQL rule in BaseTools. Reference: https://cwe.mitre.org/data/definitions/686.html The following CodeQL errors are resolved: 1. Check failure on line 1115 in BaseTools/Source/C/EfiRom/EfiRom.c - This argument should be of type 'int' but is of type 'char *'. - This argument should be of type 'int' but is of type 'signed char *'. 2. Check failure on line 359 in BaseTools/Source/C/GenFw/Elf32Convert.c - This argument should be of type 'CHAR8 *' but is of type 'unsigned int'. 3. Check failure on line 1841 in BaseTools/Source/C/GenFw/Elf64Convert.c - This argument should be of type 'unsigned int' but is of type 'unsigned long long'. 4. Check failure on line 1871 in BaseTools/Source/C/GenFw/Elf64Convert.c - This argument should be of type 'unsigned int' but is of type 'unsigned long long'. 5. Check failure on line 2400 in BaseTools/Source/C/GenFv/GenFvInternalLib.c - This argument should be of type 'unsigned long long' but is of type 'unsigned int'. 6. Check failure on line 1099 in BaseTools/Source/C/GenFw/Elf64Convert.c - This argument should be of type 'CHAR8 *' but is of type 'unsigned int'. 7. Check failure on line 1098 in BaseTools/Source/C/GenSec/GenSec.c - This argument should be of type 'CHAR8 *' but is of type 'char **'. 8. Check failure on line 911 in BaseTools/Source/C/GenSec/GenSec.c - This argument should be of type 'CHAR8 *' but is of type 'char **'. Cc: Bob Feng Cc: Liming Gao Cc: Yuwei Chen Cc: Sean Brogan Cc: Michael D Kinney Signed-off-by: Michael Kubacki Reviewed-by: Sean Brogan Reviewed-by: Michael D Kinney --- BaseTools/Source/C/EfiRom/EfiRom.c | 2 +- BaseTools/Source/C/GenFv/GenFvInternalLib.c | 2 +- BaseTools/Source/C/GenFw/Elf32Convert.c | 2 +- BaseTools/Source/C/GenFw/Elf64Convert.c | 6 +++--- BaseTools/Source/C/GenSec/GenSec.c | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/BaseTools/Source/C/EfiRom/EfiRom.c b/BaseTools/Source/C/EfiRom/EfiRom.c index 2506f559d5..fa7bf0e62e 100644 --- a/BaseTools/Source/C/EfiRom/EfiRom.c +++ b/BaseTools/Source/C/EfiRom/EfiRom.c @@ -1112,7 +1112,7 @@ Returns: goto Done; } if (DebugLevel > 9) { - Error (NULL, 0, 2000, "Invalid option value", "Debug Level range is 0-9, current input level is %d", Argv[1]); + Error (NULL, 0, 2000, "Invalid option value", "Debug Level range is 0-9, current input level is %llu", DebugLevel); ReturnStatus = 1; goto Done; } diff --git a/BaseTools/Source/C/GenFv/GenFvInternalLib.c b/BaseTools/Source/C/GenFv/GenFvInternalLib.c index b5b9425003..6bd59515b1 100644 --- a/BaseTools/Source/C/GenFv/GenFvInternalLib.c +++ b/BaseTools/Source/C/GenFv/GenFvInternalLib.c @@ -2397,7 +2397,7 @@ Returns: VerboseMsg("SecCore entry point Address = 0x%llX", (unsigned long long) SecCoreEntryAddress); VerboseMsg("BaseAddress = 0x%llX", (unsigned long long) FvInfo->BaseAddress); bSecCore = (UINT32)(SecCoreEntryAddress - FvInfo->BaseAddress); - VerboseMsg("offset = 0x%llX", bSecCore); + VerboseMsg("offset = 0x%X", bSecCore); if(bSecCore > 0x0fffff) { Error(NULL, 0, 3000, "Invalid", "SEC Entry point must be within 1MB of start of the FV"); diff --git a/BaseTools/Source/C/GenFw/Elf32Convert.c b/BaseTools/Source/C/GenFw/Elf32Convert.c index d917a444c8..87d7f133f1 100644 --- a/BaseTools/Source/C/GenFw/Elf32Convert.c +++ b/BaseTools/Source/C/GenFw/Elf32Convert.c @@ -356,7 +356,7 @@ ScanSections32 ( mCoffOffset += sizeof (EFI_IMAGE_NT_HEADERS32); break; default: - VerboseMsg ("%s unknown e_machine type. Assume IA-32", (UINTN)mEhdr->e_machine); + VerboseMsg ("%u unknown e_machine type. Assume IA-32", (UINTN)mEhdr->e_machine); mCoffOffset += sizeof (EFI_IMAGE_NT_HEADERS32); break; } diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c b/BaseTools/Source/C/GenFw/Elf64Convert.c index c6092269e2..8b50774beb 100644 --- a/BaseTools/Source/C/GenFw/Elf64Convert.c +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c @@ -1096,7 +1096,7 @@ ScanSections64 ( break; default: - VerboseMsg ("%s unknown e_machine type. Assume X64", (UINTN)mEhdr->e_machine); + VerboseMsg ("%u unknown e_machine type. Assume X64", (UINTN)mEhdr->e_machine); NtHdr->Pe32Plus.FileHeader.Machine = EFI_IMAGE_MACHINE_X64; NtHdr->Pe32Plus.OptionalHeader.Magic = EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC; } @@ -1837,7 +1837,7 @@ WriteRelocations64 ( case R_X86_64_REX_GOTPCRELX: break; case R_X86_64_64: - VerboseMsg ("EFI_IMAGE_REL_BASED_DIR64 Offset: 0x%08X", + VerboseMsg ("EFI_IMAGE_REL_BASED_DIR64 Offset: 0x%08llX", mCoffSectionsOffset[RelShdr->sh_info] + (Rel->r_offset - SecShdr->sh_addr)); CoffAddFixup( (UINT32) ((UINT64) mCoffSectionsOffset[RelShdr->sh_info] @@ -1867,7 +1867,7 @@ WriteRelocations64 ( // // case R_X86_64_32S: case R_X86_64_32: - VerboseMsg ("EFI_IMAGE_REL_BASED_HIGHLOW Offset: 0x%08X", + VerboseMsg ("EFI_IMAGE_REL_BASED_HIGHLOW Offset: 0x%08llX", mCoffSectionsOffset[RelShdr->sh_info] + (Rel->r_offset - SecShdr->sh_addr)); CoffAddFixup( (UINT32) ((UINT64) mCoffSectionsOffset[RelShdr->sh_info] diff --git a/BaseTools/Source/C/GenSec/GenSec.c b/BaseTools/Source/C/GenSec/GenSec.c index a4c2d19aa6..cf24d821aa 100644 --- a/BaseTools/Source/C/GenSec/GenSec.c +++ b/BaseTools/Source/C/GenSec/GenSec.c @@ -908,7 +908,7 @@ Returns: if (FileBuffer != NULL) { free (FileBuffer); } - Error (NULL, 0, 2000, "Invalid parameter", "the size of input file %s can't be zero", InputFileName); + Error (NULL, 0, 2000, "Invalid parameter", "the size of input file %s can't be zero", *InputFileName); return EFI_NOT_FOUND; } @@ -1095,7 +1095,7 @@ Returns: if (FileBuffer != NULL) { free (FileBuffer); } - Error (NULL, 0, 2000, "Invalid parameter", "the size of input file %s can't be zero", InputFileName); + Error (NULL, 0, 2000, "Invalid parameter", "the size of input file %s can't be zero", *InputFileName); return EFI_NOT_FOUND; } -- 2.39.2