Patch "kconfig/nconf: Fix hang when editing symbol with a long prompt" has been added to the 4.8-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
kconfig/nconf: Fix hang when editing symbol with a long prompt
to the 4.8-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
kconfig-nconf-fix-hang-when-editing-symbol-with-a-long-prompt.patch
and it can be found in the queue-4.8 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
79e51b5c2deea542b3bb8c66e0d502230b017ddeMon Sep 17 00:00:00 2001
From: Ben Hutchings <[email protected]>
Date: Thu, 24 Nov 2016 22:10:23 +0000
Subject: kconfig/nconf: Fix hang when editing symbol with a long prompt
From: Ben Hutchings <[email protected]>
commit 79e51b5c2deea542b3bb8c66e0d502230b017dde upstream.
Currently it is impossible to edit the value of a config symbol with a prompt longer than (terminal width - 2) characters. dialog_inputbox() calculates a negative x-offset for the input window and newwin() fails as this is invalid. It also doesn't check for this failure, so it busy-loops calling wgetch(NULL) which immediately returns -1.
The additions in the offset calculations also don't match the intended size of the window.
Limit the window size and calculate the offset similarly to show_scroll_win().
--- scripts/kconfig/nconf.gui.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)
scripts/kconfig/nconf.gui.c +11 -4
@@ -364,12 +364,14 @@ int dialog_inputbox(WINDOW *main_window,WINDOW *prompt_win;WINDOW *form_win;PANEL *panel; -int i, x, y; +int i, x, y, lines, columns, win_lines, win_cols;int res =-1 ;int cursor_position =strlen (init);int cursor_form_win;char *result = *resultp; +getmaxyx (stdscr, lines, columns); +if (strlen (init)+1 > *result_len) { *result_len =strlen (init)+1 ; *resultp = result =realloc (result, *result_len);
@@ -386,14 +388,19 @@ int dialog_inputbox(WINDOW *main_window,if (title) prompt_width =max (prompt_width,strlen (title)); + win_lines =min (prompt_lines+6 , lines-2 ); + win_cols =min (prompt_width+7 , columns-2 ); + prompt_lines =max (win_lines-6 ,0 ); + prompt_width =max (win_cols-7 ,0 ); +/* place dialog in middle of screen */ - y = (getmaxy (stdscr)-(prompt_lines+4 ))/2 ; - x = (getmaxx (stdscr)-(prompt_width+4 ))/2 ; + y = (lines-win_lines)/2 ; + x = (columns-win_cols)/2 ;strncpy (result, init, *result_len);/* create the windows */ - win =newwin (prompt_lines+6 , prompt_width+7 , y, x); + win =newwin (win_lines, win_cols, y, x); prompt_win =derwin (win, prompt_lines+1 , prompt_width,2 ,2 ); form_win =derwin (win,1 , prompt_width, prompt_lines+3 ,2 );keypad (form_win, TRUE);
Patches currently in stable-queue which might be from [email protected] are
queue-4.8/kconfig-nconf-fix-hang-when-editing-symbol-with-a-long-prompt.patch