mirror of
https://github.com/reactos/reactos.git
synced 2025-04-30 02:58:48 +00:00
[NTOS:KD] Protect against invalid user arguments for BREAKPOINT_LOAD_SYMBOLS. CORE-14057
This commit is contained in:
parent
34ccecbce8
commit
68ebcf16b8
1 changed files with 30 additions and 3 deletions
|
@ -153,11 +153,38 @@ KdpEnterDebuggerException(IN PKTRAP_FRAME TrapFrame,
|
|||
#ifdef KDBG
|
||||
else if (ExceptionCommand == BREAKPOINT_LOAD_SYMBOLS)
|
||||
{
|
||||
PKD_SYMBOLS_INFO SymbolsInfo;
|
||||
KD_SYMBOLS_INFO CapturedSymbolsInfo;
|
||||
PLDR_DATA_TABLE_ENTRY LdrEntry;
|
||||
|
||||
/* Load symbols. Currently implemented only for KDBG! */
|
||||
if(KdbpSymFindModule(((PKD_SYMBOLS_INFO)ExceptionRecord->ExceptionInformation[2])->BaseOfDll, NULL, -1, &LdrEntry))
|
||||
KdbSymProcessSymbols(LdrEntry);
|
||||
SymbolsInfo = (PKD_SYMBOLS_INFO)ExceptionRecord->ExceptionInformation[2];
|
||||
if (PreviousMode != KernelMode)
|
||||
{
|
||||
_SEH2_TRY
|
||||
{
|
||||
ProbeForRead(SymbolsInfo,
|
||||
sizeof(*SymbolsInfo),
|
||||
1);
|
||||
RtlCopyMemory(&CapturedSymbolsInfo,
|
||||
SymbolsInfo,
|
||||
sizeof(*SymbolsInfo));
|
||||
SymbolsInfo = &CapturedSymbolsInfo;
|
||||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
SymbolsInfo = NULL;
|
||||
}
|
||||
_SEH2_END;
|
||||
}
|
||||
|
||||
if (SymbolsInfo != NULL)
|
||||
{
|
||||
/* Load symbols. Currently implemented only for KDBG! */
|
||||
if (KdbpSymFindModule(SymbolsInfo->BaseOfDll, NULL, -1, &LdrEntry))
|
||||
{
|
||||
KdbSymProcessSymbols(LdrEntry);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (ExceptionCommand == BREAKPOINT_PROMPT)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue