From 0ef209f22c24b9243de68c35c576f7111198f915 Mon Sep 17 00:00:00 2001 From: Jan Vrany Date: Thu, 30 May 2019 13:04:26 +0100 Subject: [PATCH] Initialize variable word in complete The complete function should set parameter word to the end of the word to complete. However, completion_find_completion_word may fail, leaving word uninitialized. To make sure word is always set, initialize it to the completion point which is the end of the line parameter. gdb/Changelog PR cli/24587 * completer.c (complete): Initialize variable word. --- gdb/ChangeLog | 5 +++++ gdb/completer.c | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2ab3615be6e..a32c6060ef2 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2019-05-30 Jan Vrany + + PR cli/24587 + * completer.c (complete): Initialize variable word. + 2019-05-29 Sergio Durigan Junior Ref.: https://bugzilla.redhat.com/show_bug.cgi?id=1708192 diff --git a/gdb/completer.c b/gdb/completer.c index cc2f80bc66e..24c84466307 100644 --- a/gdb/completer.c +++ b/gdb/completer.c @@ -1622,6 +1622,13 @@ complete (const char *line, char const **word, int *quote_char) completion_tracker tracker_handle_completions; completion_tracker *tracker; + /* The WORD should be set to the end of word to complete. We initialize + to the completion point which is assumed to be at the end of LINE. + This leaves WORD to be initialized to a sensible value in cases + completion_find_completion_word() fails i.e., throws an exception. + See bug 24587. */ + *word = line + strlen (line); + try { *word = completion_find_completion_word (tracker_handle_brkchars, -- 2.30.2