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:
Aleksey Bragin
2006-11-26 13:37:50 +00:00
parent 62d7a61d53
commit 7a692fb597
7 changed files with 43 additions and 43 deletions
+3 -3
View File
@@ -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);
}
+1 -1
View File
@@ -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)
{
+4 -4
View File
@@ -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;
+4 -4
View File
@@ -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;
+2 -2
View File
@@ -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
+26 -26
View File
@@ -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);