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
* binparser.c (bin_parser_free): Free the record list
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,
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);
}
}