mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 19:26:32 +00:00
Dmitry G. Gorbachev: Fix possible buffer overflow in FreeLdr
See issue #1881 for more details. svn path=/trunk/; revision=24837
This commit is contained in:
@@ -111,7 +111,7 @@ NoGui:
|
||||
}
|
||||
|
||||
// Try to read the boot type
|
||||
if (!IniReadSettingByName(SectionId, "BootType", SettingValue, 80))
|
||||
if (!IniReadSettingByName(SectionId, "BootType", SettingValue, sizeof(SettingValue)))
|
||||
{
|
||||
sprintf(SettingName, "BootType= line not found in section [%s] in freeldr.ini.\n", OperatingSystemSectionNames[SelectedOperatingSystem]);
|
||||
UiMessageBox(SettingName);
|
||||
@@ -180,7 +180,7 @@ ULONG GetDefaultOperatingSystem(PCSTR OperatingSystemList[], ULONG OperatingSy
|
||||
DefaultOSName = CmdLineGetDefaultOS();
|
||||
if (NULL == DefaultOSName)
|
||||
{
|
||||
if (IniReadSettingByName(SectionId, "DefaultOS", DefaultOSText, 80))
|
||||
if (IniReadSettingByName(SectionId, "DefaultOS", DefaultOSText, sizeof(DefaultOSText)))
|
||||
{
|
||||
DefaultOSName = DefaultOSText;
|
||||
}
|
||||
@@ -218,7 +218,7 @@ LONG GetTimeOut(VOID)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (IniReadSettingByName(SectionId, "TimeOut", TimeOutText, 20))
|
||||
if (IniReadSettingByName(SectionId, "TimeOut", TimeOutText, sizeof(TimeOutText)))
|
||||
{
|
||||
TimeOut = atoi(TimeOutText);
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ VOID DriveMapMapDrivesInSection(PCSTR SectionName)
|
||||
for (Index=0; Index<SectionItemCount; Index++)
|
||||
{
|
||||
// Get the next setting from the .ini file section
|
||||
if (IniReadSettingByNumber(SectionId, Index, SettingName, 80, SettingValue, 80))
|
||||
if (IniReadSettingByNumber(SectionId, Index, SettingName, sizeof(SettingName), SettingValue, sizeof(SettingValue)))
|
||||
{
|
||||
if (_stricmp(SettingName, "DriveMap") == 0)
|
||||
{
|
||||
|
||||
@@ -233,27 +233,27 @@ BOOLEAN LinuxParseIniSection(PCSTR OperatingSystemName)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!IniReadSettingByName(SectionId, "BootPath", LinuxBootPath, 260))
|
||||
if (!IniReadSettingByName(SectionId, "BootPath", LinuxBootPath, sizeof(LinuxBootPath)))
|
||||
{
|
||||
UiMessageBox("Boot path not specified for selected OS!");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Get the kernel name
|
||||
if (!IniReadSettingByName(SectionId, "Kernel", LinuxKernelName, 260))
|
||||
if (!IniReadSettingByName(SectionId, "Kernel", LinuxKernelName, sizeof(LinuxKernelName)))
|
||||
{
|
||||
UiMessageBox("Linux kernel filename not specified for selected OS!");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// Get the initrd name
|
||||
if (IniReadSettingByName(SectionId, "Initrd", LinuxInitrdName, 260))
|
||||
if (IniReadSettingByName(SectionId, "Initrd", LinuxInitrdName, sizeof(LinuxInitrdName)))
|
||||
{
|
||||
LinuxHasInitrd = TRUE;
|
||||
}
|
||||
|
||||
// Get the command line
|
||||
if (IniReadSettingByName(SectionId, "CommandLine", LinuxCommandLine, 260))
|
||||
if (IniReadSettingByName(SectionId, "CommandLine", LinuxCommandLine, sizeof(LinuxCommandLine)))
|
||||
{
|
||||
RemoveQuotes(LinuxCommandLine);
|
||||
LinuxCommandLineSize = strlen(LinuxCommandLine) + 1;
|
||||
|
||||
@@ -38,7 +38,7 @@ VOID LoadAndBootBootSector(PCSTR OperatingSystemName)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!IniReadSettingByName(SectionId, "BootSectorFile", FileName, 260))
|
||||
if (!IniReadSettingByName(SectionId, "BootSectorFile", FileName, sizeof(FileName)))
|
||||
{
|
||||
UiMessageBox("Boot sector file not specified for selected OS!");
|
||||
return;
|
||||
@@ -111,7 +111,7 @@ VOID LoadAndBootPartition(PCSTR OperatingSystemName)
|
||||
}
|
||||
|
||||
// Read the boot drive
|
||||
if (!IniReadSettingByName(SectionId, "BootDrive", SettingValue, 80))
|
||||
if (!IniReadSettingByName(SectionId, "BootDrive", SettingValue, sizeof(SettingValue)))
|
||||
{
|
||||
UiMessageBox("Boot drive not specified for selected OS!");
|
||||
return;
|
||||
@@ -120,7 +120,7 @@ VOID LoadAndBootPartition(PCSTR OperatingSystemName)
|
||||
DriveNumber = DriveMapGetBiosDriveNumber(SettingValue);
|
||||
|
||||
// Read the boot partition
|
||||
if (!IniReadSettingByName(SectionId, "BootPartition", SettingValue, 80))
|
||||
if (!IniReadSettingByName(SectionId, "BootPartition", SettingValue, sizeof(SettingValue)))
|
||||
{
|
||||
UiMessageBox("Boot partition not specified for selected OS!");
|
||||
return;
|
||||
@@ -179,7 +179,7 @@ VOID LoadAndBootDrive(PCSTR OperatingSystemName)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!IniReadSettingByName(SectionId, "BootDrive", SettingValue, 80))
|
||||
if (!IniReadSettingByName(SectionId, "BootDrive", SettingValue, sizeof(SettingValue)))
|
||||
{
|
||||
UiMessageBox("Boot drive not specified for selected OS!");
|
||||
return;
|
||||
|
||||
@@ -58,7 +58,7 @@ BOOLEAN InitOperatingSystemList(PCSTR **SectionNamesPointer, PCSTR **DisplayName
|
||||
CurrentOperatingSystemIndex = 0;
|
||||
for (Idx=0; Idx<SectionSettingCount; Idx++)
|
||||
{
|
||||
IniReadSettingByNumber(SectionId, Idx, SettingName, 260, SettingValue, 260);
|
||||
IniReadSettingByNumber(SectionId, Idx, SettingName, sizeof(SettingName), SettingValue, sizeof(SettingValue));
|
||||
|
||||
if (IniOpenSection(SettingName, &OperatingSystemSectionId))
|
||||
{
|
||||
@@ -94,7 +94,7 @@ ULONG CountOperatingSystems(ULONG SectionId)
|
||||
SectionSettingCount = IniGetNumSectionItems(SectionId);
|
||||
for (Idx=0; Idx<SectionSettingCount; Idx++)
|
||||
{
|
||||
IniReadSettingByNumber(SectionId, Idx, SettingName, 260, SettingValue, 260);
|
||||
IniReadSettingByNumber(SectionId, Idx, SettingName, sizeof(SettingName), SettingValue, sizeof(SettingValue));
|
||||
|
||||
if (IniOpenSection(SettingName, NULL))
|
||||
{
|
||||
|
||||
@@ -758,7 +758,7 @@ LoadAndBootReactOS(PCSTR OperatingSystemName)
|
||||
/*
|
||||
* Read the optional kernel parameters (if any)
|
||||
*/
|
||||
if (IniReadSettingByName(SectionId, "Options", value, 1024))
|
||||
if (IniReadSettingByName(SectionId, "Options", value, sizeof(value)))
|
||||
{
|
||||
strcat(reactos_kernel_cmdline, " ");
|
||||
strcat(reactos_kernel_cmdline, value);
|
||||
@@ -795,7 +795,7 @@ LoadAndBootReactOS(PCSTR OperatingSystemName)
|
||||
* Find the kernel image name
|
||||
* and try to load the kernel off the disk
|
||||
*/
|
||||
if(IniReadSettingByName(SectionId, "Kernel", value, 1024))
|
||||
if(IniReadSettingByName(SectionId, "Kernel", value, sizeof(value)))
|
||||
{
|
||||
/*
|
||||
* Set the name and
|
||||
@@ -823,7 +823,7 @@ LoadAndBootReactOS(PCSTR OperatingSystemName)
|
||||
* Find the HAL image name
|
||||
* and try to load the kernel off the disk
|
||||
*/
|
||||
if(IniReadSettingByName(SectionId, "Hal", value, 1024))
|
||||
if(IniReadSettingByName(SectionId, "Hal", value, sizeof(value)))
|
||||
{
|
||||
/*
|
||||
* Set the name and
|
||||
|
||||
@@ -83,84 +83,84 @@ BOOLEAN UiInitialize(BOOLEAN ShowGui)
|
||||
DisplayModeText[0] = '\0';
|
||||
if (IniOpenSection("Display", &SectionId))
|
||||
{
|
||||
if (! IniReadSettingByName(SectionId, "DisplayMode", DisplayModeText, 260))
|
||||
if (! IniReadSettingByName(SectionId, "DisplayMode", DisplayModeText, sizeof(DisplayModeText)))
|
||||
{
|
||||
DisplayModeText[0] = '\0';
|
||||
}
|
||||
|
||||
if (IniReadSettingByName(SectionId, "TitleText", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "TitleText", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
strcpy(UiTitleBoxTitleText, SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "TimeText", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "TimeText", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
strcpy(UiTimeText, SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "StatusBarColor", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "StatusBarColor", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
UiStatusBarBgColor = UiTextToColor(SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "StatusBarTextColor", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "StatusBarTextColor", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
UiStatusBarFgColor = UiTextToColor(SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "BackdropTextColor", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "BackdropTextColor", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
UiBackdropFgColor = UiTextToColor(SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "BackdropColor", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "BackdropColor", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
UiBackdropBgColor = UiTextToColor(SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "BackdropFillStyle", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "BackdropFillStyle", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
UiBackdropFillStyle = UiTextToFillStyle(SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "TitleBoxTextColor", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "TitleBoxTextColor", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
UiTitleBoxFgColor = UiTextToColor(SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "TitleBoxColor", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "TitleBoxColor", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
UiTitleBoxBgColor = UiTextToColor(SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "MessageBoxTextColor", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "MessageBoxTextColor", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
UiMessageBoxFgColor = UiTextToColor(SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "MessageBoxColor", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "MessageBoxColor", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
UiMessageBoxBgColor = UiTextToColor(SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "MenuTextColor", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "MenuTextColor", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
UiMenuFgColor = UiTextToColor(SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "MenuColor", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "MenuColor", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
UiMenuBgColor = UiTextToColor(SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "TextColor", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "TextColor", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
UiTextColor = UiTextToColor(SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "SelectedTextColor", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "SelectedTextColor", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
UiSelectedTextColor = UiTextToColor(SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "SelectedColor", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "SelectedColor", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
UiSelectedTextBgColor = UiTextToColor(SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "EditBoxTextColor", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "EditBoxTextColor", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
UiEditBoxTextColor = UiTextToColor(SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "EditBoxColor", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "EditBoxColor", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
UiEditBoxBgColor = UiTextToColor(SettingText);
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "SpecialEffects", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "SpecialEffects", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
if (_stricmp(SettingText, "Yes") == 0 && strlen(SettingText) == 3)
|
||||
{
|
||||
@@ -171,7 +171,7 @@ BOOLEAN UiInitialize(BOOLEAN ShowGui)
|
||||
UiUseSpecialEffects = FALSE;
|
||||
}
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "ShowTime", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "ShowTime", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
if (_stricmp(SettingText, "Yes") == 0 && strlen(SettingText) == 3)
|
||||
{
|
||||
@@ -182,7 +182,7 @@ BOOLEAN UiInitialize(BOOLEAN ShowGui)
|
||||
UiDrawTime = FALSE;
|
||||
}
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "MinimalUI", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "MinimalUI", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
if (_stricmp(SettingText, "Yes") == 0 && strlen(SettingText) == 3)
|
||||
{
|
||||
@@ -193,7 +193,7 @@ BOOLEAN UiInitialize(BOOLEAN ShowGui)
|
||||
UiMinimal = FALSE;
|
||||
}
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "MenuBox", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "MenuBox", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
if (_stricmp(SettingText, "Yes") == 0 && strlen(SettingText) == 3)
|
||||
{
|
||||
@@ -204,7 +204,7 @@ BOOLEAN UiInitialize(BOOLEAN ShowGui)
|
||||
UiMenuBox = FALSE;
|
||||
}
|
||||
}
|
||||
if (IniReadSettingByName(SectionId, "CenterMenu", SettingText, 260))
|
||||
if (IniReadSettingByName(SectionId, "CenterMenu", SettingText, sizeof(SettingText)))
|
||||
{
|
||||
if (_stricmp(SettingText, "Yes") == 0 && strlen(SettingText) == 3)
|
||||
{
|
||||
@@ -595,7 +595,7 @@ VOID UiShowMessageBoxesInSection(PCSTR SectionName)
|
||||
//
|
||||
for (Idx=0; Idx<IniGetNumSectionItems(SectionId); Idx++)
|
||||
{
|
||||
IniReadSettingByNumber(SectionId, Idx, SettingName, 79, SettingValue, 79);
|
||||
IniReadSettingByNumber(SectionId, Idx, SettingName, sizeof(SettingName), SettingValue, sizeof(SettingValue));
|
||||
|
||||
if (_stricmp(SettingName, "MessageBox") == 0)
|
||||
{
|
||||
@@ -610,7 +610,7 @@ VOID UiShowMessageBoxesInSection(PCSTR SectionName)
|
||||
if (MessageBoxText)
|
||||
{
|
||||
// Get the MessageBox text
|
||||
IniReadSettingByNumber(SectionId, Idx, SettingName, 80, MessageBoxText, MessageBoxTextSize);
|
||||
IniReadSettingByNumber(SectionId, Idx, SettingName, sizeof(SettingName), MessageBoxText, MessageBoxTextSize);
|
||||
|
||||
// Fix it up
|
||||
UiEscapeString(MessageBoxText);
|
||||
|
||||
Reference in New Issue
Block a user