mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-30 12:44:10 +08:00
Avoid indexing std::vector past the end
The code here wants to find address of an element, and often this element is one past the end of std::vector. Dereferencing that element leads to undefined behavior, so it's better to simply use pointer arithmetic instead of taking address of invalid dereference. gdb/ChangeLog: * psymtab.c (recursively_search_psymtabs): Use pointer arithmetic instead of dereferencing std::vector past the end.
This commit is contained in:
parent
cfa27c399e
commit
47fea87745
@ -1,3 +1,8 @@
|
||||
2017-12-31 Ruslan Kabatsayev <b7.10110111@gmail.com>
|
||||
|
||||
* psymtab.c (recursively_search_psymtabs): Use pointer arithmetic
|
||||
instead of dereferencing std::vector past the end.
|
||||
|
||||
2017-12-30 Simon Marchi <simon.marchi@ericsson.com>
|
||||
|
||||
* common/diagnostics.h
|
||||
|
@ -1337,21 +1337,21 @@ recursively_search_psymtabs
|
||||
}
|
||||
|
||||
partial_symbol **gbound
|
||||
= &objfile->global_psymbols[ps->globals_offset + ps->n_global_syms];
|
||||
= objfile->global_psymbols.data () + ps->globals_offset + ps->n_global_syms;
|
||||
partial_symbol **sbound
|
||||
= &objfile->static_psymbols[ps->statics_offset + ps->n_static_syms];
|
||||
= objfile->static_psymbols.data () + ps->statics_offset + ps->n_static_syms;
|
||||
partial_symbol **bound = gbound;
|
||||
|
||||
/* Go through all of the symbols stored in a partial
|
||||
symtab in one loop. */
|
||||
partial_symbol **psym = &objfile->global_psymbols[ps->globals_offset];
|
||||
partial_symbol **psym = objfile->global_psymbols.data () + ps->globals_offset;
|
||||
while (keep_going)
|
||||
{
|
||||
if (psym >= bound)
|
||||
{
|
||||
if (bound == gbound && ps->n_static_syms != 0)
|
||||
{
|
||||
psym = &objfile->static_psymbols[ps->statics_offset];
|
||||
psym = objfile->static_psymbols.data () + ps->statics_offset;
|
||||
bound = sbound;
|
||||
}
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user