diff --git a/NEWS b/NEWS index fff087db3..6ee8a9a33 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,8 @@ Any uppercase BUG_* names are modernish shell bug IDs. 2021-11-14: +- Fixed: ksh crashed after unsetting .sh.match and then matching a pattern. + - Another test/[ fix: "test \( string1 -a string2 \)" and "test \( string1 -o string2 \)" no longer give an incorrect "argument expected" error message. diff --git a/src/cmd/ksh93/sh/init.c b/src/cmd/ksh93/sh/init.c index 5e263730c..bc89a2f44 100644 --- a/src/cmd/ksh93/sh/init.c +++ b/src/cmd/ksh93/sh/init.c @@ -783,6 +783,9 @@ void sh_setmatch(Shell_t *shp,const char *v, int vsize, int nmatch, regoff_t mat unsigned int savesub = shp->subshell; Namarr_t *ap = nv_arrayptr(SH_MATCHNOD); Namarr_t *ap_save = ap; + /* do not crash if .sh.match is unset */ + if(!ap) + return; shp->subshell = 0; #if !SHOPT_2DMATCH index = 0;