Comment out debug spew. (elf_parser_lookup_symbol): Add check that address

2006-08-20  Soren Sandmann  <sandmann@daimi.au.dk>

	* elfparser.c (elf_parser_get_load_address): Comment out debug spew.
	(elf_parser_lookup_symbol): Add check that address is actually
	within the bounds of the found function.
This commit is contained in:
Soren Sandmann
2006-08-21 03:34:44 +00:00
committed by Søren Sandmann Pedersen
parent a880ee7f60
commit 66a28bd501
2 changed files with 27 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2006-08-20 Soren Sandmann <sandmann@daimi.au.dk>
* elfparser.c (elf_parser_get_load_address): Comment out debug spew.
(elf_parser_lookup_symbol): Add check that address is actually
within the bounds of the found function.
2006-08-20 Soren Sandmann <sandmann@daimi.au.dk>
* process.h: Make process_lookup_symbol() return a string. Delete

View File

@ -411,7 +411,9 @@ elf_parser_get_load_address (ElfParser *parser)
}
}
#if 0
g_print ("load address is: %8p\n", (void *)load_address);
#endif
return load_address;
}
@ -453,6 +455,9 @@ const ElfSym *
elf_parser_lookup_symbol (ElfParser *parser,
gulong address)
{
const ElfSym *result;
gsize size;
if (!parser->symbols)
read_symbols (parser);
@ -465,10 +470,22 @@ elf_parser_lookup_symbol (ElfParser *parser,
g_print ("the address we are looking up is %p\n", address);
#endif
/* FIXME: we should look at the symbol size and check if the
* address is actually within the function.
*/
return do_lookup (parser->symbols, address, 0, parser->n_symbols - 1);
result = do_lookup (parser->symbols, address, 0, parser->n_symbols - 1);
if (result)
{
/* Check that address is actually within the function */
bin_parser_begin (parser->parser, parser->sym_format, result->offset);
size = bin_parser_get_uint (parser->parser, "st_size");
if (result->address + size > address)
result = NULL;
bin_parser_end (parser->parser);
}
return result;
}
static ElfParser *