This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[FYI] Use xstrdup in tui_set_source_content
- From: Tom Tromey <tom at tromey dot com>
- To: gdb-patches at sourceware dot org
- Cc: Tom Tromey <tom at tromey dot com>
- Date: Wed, 2 Jan 2019 11:44:14 -0700
- Subject: [FYI] 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-02 Tom Tromey <tom@tromey.com>
* tui/tui-source.c (tui_set_source_content): Use xstrdup.
---
gdb/ChangeLog | 4 ++++
gdb/tui/tui-source.c | 8 +-------
2 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c
index 9c2a982cc0..ed9562a930 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++;
--
2.17.2