Make a copy of the vdso bytes to make valgrind a little quieter.

2007-03-02  Soren Sandmann <sandmann@daimi.au.dk>

	* process.c (process_get_vdso_bytes): Make a copy of the vdso
	bytes to make valgrind a little quieter.

	* binparser.c: Note to self: Save the file, *then* commit.
	

svn path=/trunk/; revision=357
This commit is contained in:
Soren Sandmann
2007-03-02 06:21:37 +00:00
committed by Søren Sandmann Pedersen
parent 5ee13adc34
commit aaa145ea9b
4 changed files with 22 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2007-03-02 Soren Sandmann <sandmann@daimi.au.dk>
* process.c (process_get_vdso_bytes): Make a copy of the vdso
bytes to make valgrind a little quieter.
* binparser.c: Note to self: Save the file, *then* commit.
2007-03-02 Soren Sandmann <sandmann@daimi.au.dk>
Fix two leaks, both pointed out by Kjartan Maraas

View File

@ -75,6 +75,8 @@ bin_parser_free (BinParser *parser)
g_free (record);
}
g_list_free (parser->records);
g_free (parser);
}

View File

@ -72,8 +72,7 @@ typedef enum
struct BinField {
const char name[BIN_MAX_NAME];
char type;
char n_bytes; /* number of bytes if type
* is UNINTERPRETED */
char n_bytes; /* number of bytes in the type */
};
BinParser * bin_parser_new (const guchar *data,

View File

@ -175,8 +175,19 @@ process_get_vdso_bytes (gsize *length)
if (strcmp (map->filename, "[vdso]") == 0)
{
bytes = (guint8 *)map->start;
n_bytes = map->end - map->start;
/* Dup the memory here so that valgrind will only
* report one 1 byte invalid read instead of
* a ton when the elf parser scans the vdso
*
* The reason we get a spurious invalid read from
* valgrind is that we are getting the address directly
* from /proc/maps, and valgrind knows that its mmap()
* wrapper never returned that address. But since it
* is a legal mapping, it is legal to read it.
*/
bytes = g_memdup ((guint8 *)map->start, n_bytes);
}
}