dbghelp: Protect COFF line number parsing against out of bounds access.
This commit is contained in:
parent
e46d650d3f
commit
dbd70d0917
|
@ -424,26 +424,26 @@ DECLSPEC_HIDDEN BOOL coff_process_info(const struct msc_debug_info* msc_dbg)
|
||||||
* If we have spilled onto the next entrypoint, then
|
* If we have spilled onto the next entrypoint, then
|
||||||
* bump the counter..
|
* bump the counter..
|
||||||
*/
|
*/
|
||||||
for (;;)
|
for (; l+1 < coff_files.files[j].neps; l++)
|
||||||
{
|
{
|
||||||
if (l+1 >= coff_files.files[j].neps) break;
|
if (symt_get_address(coff_files.files[j].entries[l+1], &addr) &&
|
||||||
symt_get_address(coff_files.files[j].entries[l+1], &addr);
|
msc_dbg->module->module.BaseOfImage + linepnt->Type.VirtualAddress < addr)
|
||||||
if (((msc_dbg->module->module.BaseOfImage + linepnt->Type.VirtualAddress) < addr))
|
{
|
||||||
|
if (coff_files.files[j].entries[l+1]->tag == SymTagFunction)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Add the line number. This is always relative to the
|
||||||
|
* start of the function, so we need to subtract that offset
|
||||||
|
* first.
|
||||||
|
*/
|
||||||
|
symt_add_func_line(msc_dbg->module,
|
||||||
|
(struct symt_function*)coff_files.files[j].entries[l+1],
|
||||||
|
coff_files.files[j].compiland->source,
|
||||||
|
linepnt->Linenumber,
|
||||||
|
msc_dbg->module->module.BaseOfImage + linepnt->Type.VirtualAddress - addr);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
l++;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (coff_files.files[j].entries[l+1]->tag == SymTagFunction)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* Add the line number. This is always relative to the
|
|
||||||
* start of the function, so we need to subtract that offset
|
|
||||||
* first.
|
|
||||||
*/
|
|
||||||
symt_get_address(coff_files.files[j].entries[l+1], &addr);
|
|
||||||
symt_add_func_line(msc_dbg->module, (struct symt_function*)coff_files.files[j].entries[l+1],
|
|
||||||
coff_files.files[j].compiland->source, linepnt->Linenumber,
|
|
||||||
msc_dbg->module->module.BaseOfImage + linepnt->Type.VirtualAddress - addr);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue