From: Tom Tromey Date: Wed, 2 Jan 2019 18:41:44 +0000 (-0700) Subject: Use xstrdup in tui_set_source_content X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=986041cda76a312e4285c9ba1e51b1778fcb15ce;p=binutils-gdb.git Use xstrdup in tui_set_source_content valgrind pointed out that the string copy in tui_set_source_content was not allocating space for the trailing \0: ==3941== Invalid write of size 1 ==3941== at 0x4C3239F: strcpy (vg_replace_strmem.c:512) ==3941== by 0x72036B: strcpy (string_fortified.h:90) ==3941== by 0x72036B: tui_set_source_content(symtab*, int, int) (tui-source.c:203) Looking closer, I don't think there's a need to check the line width here, so this patch changes it to use xstrdup. Tested by re-running the TUI under valgrind. There are still other valgrind reports from TUI code, but this one is gone. gdb/ChangeLog 2019-01-03 Tom Tromey * tui/tui-source.c (tui_set_source_content): Use xstrdup. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2292eaaac86..305eb7a835b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2019-01-03 Tom Tromey + + * tui/tui-source.c (tui_set_source_content): Use xstrdup. + 2019-01-03 Tom Tromey * python/py-symtab.c (salpy_str): Update. diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c index 9c2a982cc0c..ed9562a9300 100644 --- a/gdb/tui/tui-source.c +++ b/gdb/tui/tui-source.c @@ -194,15 +194,9 @@ tui_set_source_content (struct symtab *s, xfree (TUI_SRC_WIN->generic.content[cur_line] ->which_element.source.line); - int alloc_len = text.size (); - if (alloc_len < line_width) - alloc_len = line_width + 1; TUI_SRC_WIN->generic.content[cur_line] ->which_element.source.line - = (char *) xmalloc (alloc_len); - strcpy (TUI_SRC_WIN->generic.content[cur_line] - ->which_element.source.line, - text.c_str ()); + = xstrdup (text.c_str ()); cur_line++; cur_line_no++;