mirror of https://github.com/acidanthera/audk.git
Fix buffer overflow issue in Consplitter.
Signed-off-by: Li Elvin <elvin.li@intel.com> Reviewed-by: Ni Ruiyu <ruiyu.ni@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13857 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
1a6fdcb009
commit
24ee1ccaf8
|
@ -2109,6 +2109,8 @@ ConSplitterGrowMapTable (
|
||||||
INT32 *OldTextOutModeMap;
|
INT32 *OldTextOutModeMap;
|
||||||
INT32 *SrcAddress;
|
INT32 *SrcAddress;
|
||||||
INT32 Index;
|
INT32 Index;
|
||||||
|
UINTN OldStepSize;
|
||||||
|
UINTN NewStepSize;
|
||||||
|
|
||||||
NewSize = Private->TextOutListCount * sizeof (INT32);
|
NewSize = Private->TextOutListCount * sizeof (INT32);
|
||||||
OldTextOutModeMap = Private->TextOutModeMap;
|
OldTextOutModeMap = Private->TextOutModeMap;
|
||||||
|
@ -2146,14 +2148,26 @@ ConSplitterGrowMapTable (
|
||||||
Size = Private->CurrentNumberOfConsoles * sizeof (INT32);
|
Size = Private->CurrentNumberOfConsoles * sizeof (INT32);
|
||||||
Index = 0;
|
Index = 0;
|
||||||
SrcAddress = OldTextOutModeMap;
|
SrcAddress = OldTextOutModeMap;
|
||||||
|
NewStepSize = NewSize / sizeof(INT32);
|
||||||
|
// If Private->CurrentNumberOfConsoles is not zero and OldTextOutModeMap
|
||||||
|
// is not NULL, it indicates that the original TextOutModeMap is not enough
|
||||||
|
// for the new console devices and has been enlarged by CONSOLE_SPLITTER_ALLOC_UNIT columns.
|
||||||
|
//
|
||||||
|
OldStepSize = NewStepSize - CONSOLE_SPLITTER_ALLOC_UNIT;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Copy the old data to the new one
|
// Copy the old data to the new one
|
||||||
//
|
//
|
||||||
while (Index < Private->TextOutMode.MaxMode) {
|
while (Index < Private->TextOutMode.MaxMode) {
|
||||||
CopyMem (TextOutModeMap, SrcAddress, Size);
|
CopyMem (TextOutModeMap, SrcAddress, Size);
|
||||||
TextOutModeMap += NewSize;
|
//
|
||||||
SrcAddress += Size;
|
// Go to next row of new TextOutModeMap.
|
||||||
|
//
|
||||||
|
TextOutModeMap += NewStepSize;
|
||||||
|
//
|
||||||
|
// Go to next row of old TextOutModeMap.
|
||||||
|
//
|
||||||
|
SrcAddress += OldStepSize;
|
||||||
Index++;
|
Index++;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in New Issue