zsh-workers
 help / color / mirror / code / Atom feed
From: Daniel Tameling <tamelingdaniel@gmail.com>
To: "zsh-workers\@zsh.org" <zsh-workers@zsh.org>
Subject: Re: [PATCH] jp: fix segfaults during parameter expansion
Date: Sat, 20 Jan 2018 17:16:37 +0100	[thread overview]
Message-ID: <m2fu705wuy.fsf@gmail.com> (raw)
In-Reply-To: <CAH+w=7bMF_Kzvme+5EVazsa2KKEHO2uh2-u_T0MSAx2H=zcXQg@mail.gmail.com>


Hi,

while working through my email backlog, I noticed that my zsh didn't
segfault. I used git bisect, and it looks like commit
4b8db48c6bd3c0230a5d81f49e478857adf9cda8 introduced it. Maybe this helps
someone that understands the code base better than me to figure out
what's wrong.

Kind regards
Daniel

Bart Schaefer <schaefer@brasslantern.com> writes:

> On Sat, Jan 13, 2018 at 10:05 PM, Joey Pabalinas
> <joeypabalinas@gmail.com> wrote:
>> Running `zsh -fc ': ${${(PAA)p[foo]}::=x}'` in current zsh versions causes:
>>
>>> "segmentation fault (core dumped) zsh -fc '(: ${${(PAA)p[foo]}::=x})'
>>
>> Add checks to catch NULL dereferences.
>
> Thanks for tracking this down.  Defensive programming is always good,
> but I think this is indicative of a problem further upstream.
>
> What's the expected output of that substitution?
>
> The following prevents the segfault for me, instead giving the error
> "zsh: not an identifier: " (i.e., empty string is not a valid
> parameter name).  But perhaps there's a different error that should
> occur here if val is NULL?
>
> diff --git a/Src/subst.c b/Src/subst.c
> index d027e3d..73491c2 100644
> --- a/Src/subst.c
> +++ b/Src/subst.c
> @@ -2430,7 +2430,10 @@ paramsubst(LinkList l, LinkNode n, char **str,
> int qt, int pf_flags,
>                 val = aval[0];
>                 isarr = 0;
>             }
> -           s = dyncat(val, s);
> +           if (val)
> +               s = dyncat(val, s);
> +           else
> +               s = dupstring(s);
>             /* Now behave po-faced as if it was always like that... */
>             subexp = 0;
>             /*


-- 
Daniel


  parent reply	other threads:[~2018-01-20 16:16 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-14  6:05 Joey Pabalinas
2018-01-14 12:06 ` Bart Schaefer
2018-01-14 12:07   ` Bart Schaefer
2018-01-14 14:05     ` [PATCH v2] " Joey Pabalinas
2018-01-14 14:01   ` [PATCH] " Joey Pabalinas
2018-01-14 14:10   ` dana
2018-01-20 16:16   ` Daniel Tameling [this message]
2018-01-20 23:38     ` Joey Pabalinas
2018-01-21  0:03     ` Bart Schaefer
2018-01-21  1:47       ` Joey Pabalinas
2018-01-21 17:43         ` Bart Schaefer
2018-01-21 20:28           ` Joey Pabalinas
2018-01-21 22:42             ` Bart Schaefer
2018-01-21 22:46               ` Joey Pabalinas
2018-01-21 20:29           ` Joey Pabalinas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m2fu705wuy.fsf@gmail.com \
    --to=tamelingdaniel@gmail.com \
    --cc=zsh-workers@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).