mirror of
https://github.com/reactos/reactos.git
synced 2025-05-03 12:50:05 +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
|
#ifdef KDBG
|
||||||
else if (ExceptionCommand == BREAKPOINT_LOAD_SYMBOLS)
|
else if (ExceptionCommand == BREAKPOINT_LOAD_SYMBOLS)
|
||||||
{
|
{
|
||||||
|
PKD_SYMBOLS_INFO SymbolsInfo;
|
||||||
|
KD_SYMBOLS_INFO CapturedSymbolsInfo;
|
||||||
PLDR_DATA_TABLE_ENTRY LdrEntry;
|
PLDR_DATA_TABLE_ENTRY LdrEntry;
|
||||||
|
|
||||||
/* Load symbols. Currently implemented only for KDBG! */
|
SymbolsInfo = (PKD_SYMBOLS_INFO)ExceptionRecord->ExceptionInformation[2];
|
||||||
if(KdbpSymFindModule(((PKD_SYMBOLS_INFO)ExceptionRecord->ExceptionInformation[2])->BaseOfDll, NULL, -1, &LdrEntry))
|
if (PreviousMode != KernelMode)
|
||||||
KdbSymProcessSymbols(LdrEntry);
|
{
|
||||||
|
_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)
|
else if (ExceptionCommand == BREAKPOINT_PROMPT)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue