[PATCH] lineedit: fix crash when icanon set with -echo

Akos Somfai akos.somfai at gmail.com
Mon Apr 3 20:52:06 UTC 2023


When icanon is set with -echo (e.g. ssh from an emacs shell) then
S.state will remain null but later it will be deferenced causing ash to
crash. Fix: additional check on state.
---
 libbb/lineedit.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index 625884adf..bdae10914 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -254,7 +254,7 @@ static NOINLINE const char *get_homedir_or_NULL(void)
 	const char *home;
 
 # if ENABLE_SHELL_ASH || ENABLE_SHELL_HUSH
-	home = state->sh_get_var ? state->sh_get_var("HOME") : getenv("HOME");
+	home = state && state->sh_get_var ? state->sh_get_var("HOME") : getenv("HOME");
 # else
 	home = getenv("HOME");
 # endif
@@ -2038,7 +2038,7 @@ static void parse_and_put_prompt(const char *prmt_ptr)
 					if (!cwd_buf) {
 						const char *home;
 # if EDITING_HAS_sh_get_var
-						cwd_buf = state->sh_get_var
+						cwd_buf = state && state->sh_get_var
 							? xstrdup(state->sh_get_var("PWD"))
 							: xrealloc_getcwd_or_warn(NULL);
 # else
-- 
2.40.0



More information about the busybox mailing list