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

Fwd: Re: [PATCH] {,un}applychange: do not call zle_setline(NULL) if quietgethist() fails



Sorry, this should have gone to the list...

---------- Original Message ----------
From: Peter Stephenson <p.w.stephenson@xxxxxxxxxxxx>
To: Kamil Dudka <kdudka@xxxxxxxxxx>
Date: 26 June 2019 at 11:31
Subject: Re: [PATCH] {,un}applychange: do not call zle_setline(NULL) if quietgethist() fails


> On 26 June 2019 at 11:19 Kamil Dudka <kdudka@xxxxxxxxxx> wrote:
> 
> 
> There is a bug report in Red Hat Bugzilla about zsh crashing on NULL
> pointer dereference: https://bugzilla.redhat.com/1722703
> 
> I was not able to reproduce the crash myself but the attached patch
> should prevent zsh from crashing in this situation.

Hmm... I'm guessing that in the failure case we probably shouldn't
set zlecs either?  It's probably not going to do anything helpful.
Possibly also return 1?

pws

>  Src/Zle/zle_utils.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/Src/Zle/zle_utils.c b/Src/Zle/zle_utils.c
> index 0277d4917..8081d3adc 100644
> --- a/Src/Zle/zle_utils.c
> +++ b/Src/Zle/zle_utils.c
> @@ -1607,7 +1607,9 @@ static int
>  unapplychange(struct change *ch)
>  {
>      if(ch->hist != histline) {
> -	zle_setline(quietgethist(ch->hist));
> +	Histent he = quietgethist(ch->hist);
> +	if(he)
> +	    zle_setline(he);
>  	zlecs = ch->new_cs;
>  	return 0;
>      }
> @@ -1647,7 +1649,9 @@ static int
>  applychange(struct change *ch)
>  {
>      if(ch->hist != histline) {
> -	zle_setline(quietgethist(ch->hist));
> +	Histent he = quietgethist(ch->hist);
> +	if(he)
> +	    zle_setline(he);
>  	zlecs = ch->old_cs;
>  	return 0;
>      }
> -- 
> 2.20.1
>



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