aboutsummaryrefslogtreecommitdiff
path: root/gdb/guile
diff options
context:
space:
mode:
authorAndy Wingo <wingo@igalia.com>2015-03-11 14:25:29 +0100
committerAndy Wingo <wingo@igalia.com>2015-03-11 14:25:29 +0100
commit84a4591a7ba0c83c165cde85898086e9a4019b0d (patch)
tree1ca2ffbf25ebd9af69d9bff4c34aa530dddd0c42 /gdb/guile
parent85642ba08c459bb2f9d1e7beffa1871c9a93ca66 (diff)
downloadgdb-84a4591a7ba0c83c165cde85898086e9a4019b0d.zip
gdb-84a4591a7ba0c83c165cde85898086e9a4019b0d.tar.gz
gdb-84a4591a7ba0c83c165cde85898086e9a4019b0d.tar.bz2
Fix memory corruption in Guile command interface
Re-registering a command will delete previous commands of the same name, running the destroyer for the command object. The Guile destroyer incorrectly tried to xfree the name and other strings, which is invalid as they are on the GC heap. gdb/ChangeLog: * guile/scm-cmd.c (cmdscm_destroyer): Don't xfree the name and other strings, as these are on the GC'd heap, and will be collected along with the smob.
Diffstat (limited to 'gdb/guile')
-rw-r--r--gdb/guile/scm-cmd.c5
1 files changed, 0 insertions, 5 deletions
diff --git a/gdb/guile/scm-cmd.c b/gdb/guile/scm-cmd.c
index c870fcc..202721b 100644
--- a/gdb/guile/scm-cmd.c
+++ b/gdb/guile/scm-cmd.c
@@ -286,11 +286,6 @@ cmdscm_destroyer (struct cmd_list_element *self, void *context)
command_smob *c_smob = (command_smob *) context;
cmdscm_release_command (c_smob);
-
- /* We allocated the name, doc string, and perhaps the prefix name. */
- xfree ((char *) self->name);
- xfree ((char *) self->doc);
- xfree ((char *) self->prefixname);
}
/* Called by gdb to invoke the command. */