Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: syntax check of 'echo $HOME' crashes in ksh emulation mode



On Monday 05 October 2015 17:42:19 Peter Stephenson wrote:
> On Mon, 5 Oct 2015 18:09:22 +0200
> 
> Kamil Dudka <kdudka@xxxxxxxxxx> wrote:
> > The following command causes a SIGSEGV in zsh (built from upstream git
> > HEAD):
> > 
> > $ ARGV0=ksh zsh -nc 'echo $HOME'
> > zsh: segmentation fault (core dumped)  ARGV0=ksh Src/zsh -nc 'echo $HOME'
> 
> I'm not sure if we need to be more careful in paramsubst(), too, but if
> we're not setting HOME because this is ksh emulation we should certainly
> say so.
> 
> pws

Thanks for the patch!  I will get it included in Fedora/RHEL packages.

Kamil

> diff --git a/Src/params.c b/Src/params.c
> index de151a4..a8abb28 100644
> --- a/Src/params.c
> +++ b/Src/params.c
> @@ -775,17 +775,18 @@ createparamtable(void)
>  #endif
>      opts[ALLEXPORT] = oae;
> 
> +    /*
> +     * For native emulation we always set the variable home
> +     * (see setupvals()).
> +     */
> +    pm = (Param) paramtab->getnode(paramtab, "HOME");
>      if (EMULATION(EMULATE_ZSH))
>      {
> -	/*
> -	 * For native emulation we always set the variable home
> -	 * (see setupvals()).
> -	 */
> -	pm = (Param) paramtab->getnode(paramtab, "HOME");
>  	pm->node.flags &= ~PM_UNSET;
>  	if (!(pm->node.flags & PM_EXPORTED))
>  	    addenv(pm, home);
> -    }
> +    } else if (!home)
> +	pm->node.flags |= PM_UNSET;
>      pm = (Param) paramtab->getnode(paramtab, "LOGNAME");
>      if (!(pm->node.flags & PM_EXPORTED))
>  	addenv(pm, pm->u.str);



Messages sorted by: Reverse Date, Date, Thread, Author