mirror of
https://github.com/sheumann/hush.git
synced 2024-12-22 14:30:31 +00:00
linedit: fix use-after-free
This commit is contained in:
parent
4301616b27
commit
f31c3b677d
@ -1357,6 +1357,7 @@ static void win_changed(int nsig)
|
|||||||
*/
|
*/
|
||||||
int FAST_FUNC read_line_input(const char *prompt, char *command, int maxsize, line_input_t *st)
|
int FAST_FUNC read_line_input(const char *prompt, char *command, int maxsize, line_input_t *st)
|
||||||
{
|
{
|
||||||
|
int len;
|
||||||
#if ENABLE_FEATURE_TAB_COMPLETION
|
#if ENABLE_FEATURE_TAB_COMPLETION
|
||||||
smallint lastWasTab = FALSE;
|
smallint lastWasTab = FALSE;
|
||||||
#endif
|
#endif
|
||||||
@ -1376,7 +1377,6 @@ int FAST_FUNC read_line_input(const char *prompt, char *command, int maxsize, li
|
|||||||
|| !(initial_settings.c_lflag & ECHO)
|
|| !(initial_settings.c_lflag & ECHO)
|
||||||
) {
|
) {
|
||||||
/* Happens when e.g. stty -echo was run before */
|
/* Happens when e.g. stty -echo was run before */
|
||||||
int len;
|
|
||||||
parse_and_put_prompt(prompt);
|
parse_and_put_prompt(prompt);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
if (fgets(command, maxsize, stdin) == NULL)
|
if (fgets(command, maxsize, stdin) == NULL)
|
||||||
@ -1843,9 +1843,10 @@ int FAST_FUNC read_line_input(const char *prompt, char *command, int maxsize, li
|
|||||||
signal(SIGWINCH, previous_SIGWINCH_handler);
|
signal(SIGWINCH, previous_SIGWINCH_handler);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
||||||
|
len = command_len;
|
||||||
DEINIT_S();
|
DEINIT_S();
|
||||||
|
|
||||||
return command_len;
|
return len; /* can't return command_len, DEINIT_S() destroys it */
|
||||||
}
|
}
|
||||||
|
|
||||||
line_input_t* FAST_FUNC new_line_input_t(int flags)
|
line_input_t* FAST_FUNC new_line_input_t(int flags)
|
||||||
|
Loading…
Reference in New Issue
Block a user