[FREELDR] Use RtlStringCbPrintfA instead of sprintf

Fixes GCC 8 warnings like:
boot/freeldr/freeldr/disk/scsiport.c:806:31: error: 'partition(0)' directive writing 12 bytes into a region of size between 1 and 64 [-Werror=format-overflow=]
     sprintf(PartitionName, "%spartition(0)", ArcName);
                               ^~~~~~~~~~~~
boot/freeldr/freeldr/disk/scsiport.c:806:5: note: 'sprintf' output between 13 and 76 bytes into a destination of size 64
     sprintf(PartitionName, "%spartition(0)", ArcName);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This commit is contained in:
Timo Kreuzer 2019-04-28 17:48:58 +02:00
parent 791b1ad7bd
commit 8f050e66fd
4 changed files with 15 additions and 11 deletions

View file

@ -803,7 +803,7 @@ SpiScanDevice(
CHAR PartitionName[64]; CHAR PartitionName[64];
/* Register device with partition(0) suffix */ /* Register device with partition(0) suffix */
sprintf(PartitionName, "%spartition(0)", ArcName); RtlStringCbPrintfA(PartitionName, sizeof(PartitionName), "%spartition(0)", ArcName);
FsRegisterDevice(PartitionName, &DiskVtbl); FsRegisterDevice(PartitionName, &DiskVtbl);
/* Read device partition table */ /* Read device partition table */
@ -817,8 +817,11 @@ SpiScanDevice(
{ {
if (PartitionBuffer->PartitionEntry[i].PartitionType != PARTITION_ENTRY_UNUSED) if (PartitionBuffer->PartitionEntry[i].PartitionType != PARTITION_ENTRY_UNUSED)
{ {
sprintf(PartitionName, "%spartition(%lu)", RtlStringCbPrintfA(PartitionName,
ArcName, PartitionBuffer->PartitionEntry[i].PartitionNumber); sizeof(PartitionName),
"%spartition(%lu)",
ArcName,
PartitionBuffer->PartitionEntry[i].PartitionNumber);
FsRegisterDevice(PartitionName, &DiskVtbl); FsRegisterDevice(PartitionName, &DiskVtbl);
} }
} }

View file

@ -50,6 +50,7 @@
#include <internal/hal.h> #include <internal/hal.h>
#include <drivers/pci/pci.h> #include <drivers/pci/pci.h>
#include <winerror.h> #include <winerror.h>
#include <ntstrsafe.h>
#else #else
#include <ntsup.h> #include <ntsup.h>
#endif #endif

View file

@ -341,7 +341,7 @@ BOOLEAN LinuxReadKernel(PFILE LinuxKernelFile)
CHAR StatusText[260]; CHAR StatusText[260];
PVOID LoadAddress; PVOID LoadAddress;
sprintf(StatusText, "Loading %s", LinuxKernelName); RtlStringCbPrintfA(StatusText, sizeof(StatusText), "Loading %s", LinuxKernelName);
UiDrawStatusText(StatusText); UiDrawStatusText(StatusText);
/* Allocate memory for Linux kernel */ /* Allocate memory for Linux kernel */
@ -411,7 +411,7 @@ BOOLEAN LinuxReadInitrd(PFILE LinuxInitrdFile)
ULONG BytesLoaded; ULONG BytesLoaded;
CHAR StatusText[260]; CHAR StatusText[260];
sprintf(StatusText, "Loading %s", LinuxInitrdName); RtlStringCbPrintfA(StatusText, sizeof(StatusText), "Loading %s", LinuxInitrdName);
UiDrawStatusText(StatusText); UiDrawStatusText(StatusText);
// Allocate memory for the ramdisk // Allocate memory for the ramdisk

View file

@ -586,15 +586,15 @@ WinLdrScanRegistry(IN OUT PLIST_ENTRY BootDriverListHead,
{ {
TRACE_CH(REACTOS, "ImagePath: not found\n"); TRACE_CH(REACTOS, "ImagePath: not found\n");
TempImagePath[0] = 0; TempImagePath[0] = 0;
sprintf(ImagePath, "%s\\system32\\drivers\\%S.sys", DirectoryPath, ServiceName); RtlStringCbPrintfA(ImagePath, sizeof(ImagePath), "%s\\system32\\drivers\\%S.sys", DirectoryPath, ServiceName);
} }
else if (TempImagePath[0] != L'\\') else if (TempImagePath[0] != L'\\')
{ {
sprintf(ImagePath, "%s%S", DirectoryPath, TempImagePath); RtlStringCbPrintfA(ImagePath, sizeof(ImagePath), "%s%S", DirectoryPath, TempImagePath);
} }
else else
{ {
sprintf(ImagePath, "%S", TempImagePath); RtlStringCbPrintfA(ImagePath, sizeof(ImagePath), "%S", TempImagePath);
TRACE_CH(REACTOS, "ImagePath: '%s'\n", ImagePath); TRACE_CH(REACTOS, "ImagePath: '%s'\n", ImagePath);
} }
@ -666,15 +666,15 @@ WinLdrScanRegistry(IN OUT PLIST_ENTRY BootDriverListHead,
{ {
TRACE_CH(REACTOS, "ImagePath: not found\n"); TRACE_CH(REACTOS, "ImagePath: not found\n");
TempImagePath[0] = 0; TempImagePath[0] = 0;
sprintf(ImagePath, "%ssystem32\\drivers\\%S.sys", DirectoryPath, ServiceName); RtlStringCbPrintfA(ImagePath, sizeof(ImagePath), "%ssystem32\\drivers\\%S.sys", DirectoryPath, ServiceName);
} }
else if (TempImagePath[0] != L'\\') else if (TempImagePath[0] != L'\\')
{ {
sprintf(ImagePath, "%s%S", DirectoryPath, TempImagePath); RtlStringCbPrintfA(ImagePath, sizeof(ImagePath), "%s%S", DirectoryPath, TempImagePath);
} }
else else
{ {
sprintf(ImagePath, "%S", TempImagePath); RtlStringCbPrintfA(ImagePath, sizeof(ImagePath), "%S", TempImagePath);
TRACE_CH(REACTOS, "ImagePath: '%s'\n", ImagePath); TRACE_CH(REACTOS, "ImagePath: '%s'\n", ImagePath);
} }
TRACE(" Adding boot driver: '%s'\n", ImagePath); TRACE(" Adding boot driver: '%s'\n", ImagePath);