Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: [PATCH v2] {,un}applychange: do not call zle_setline(NULL) if quietgethist() fails
Sorry, I used dputs() incorrectly, which caused undefined symbols
in a non-debug build. The attached patch fixes it. Sorry for the
troubles!
Kamil
On Tuesday, July 23, 2019 3:45:48 PM CEST Kamil Dudka 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.
> ---
> Src/Zle/zle_utils.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/Src/Zle/zle_utils.c b/Src/Zle/zle_utils.c
> index 0277d4917..d549b885b 100644
> --- a/Src/Zle/zle_utils.c
> +++ b/Src/Zle/zle_utils.c
> @@ -1607,7 +1607,12 @@ static int
> unapplychange(struct change *ch)
> {
> if(ch->hist != histline) {
> - zle_setline(quietgethist(ch->hist));
> + Histent he = quietgethist(ch->hist);
> + if(!he) {
> + dputs(ERRMSG("quietgethist(ch->hist) returned NULL"));
> + return 1;
> + }
> + zle_setline(he);
> zlecs = ch->new_cs;
> return 0;
> }
> @@ -1647,7 +1652,12 @@ static int
> applychange(struct change *ch)
> {
> if(ch->hist != histline) {
> - zle_setline(quietgethist(ch->hist));
> + Histent he = quietgethist(ch->hist);
> + if(!he) {
> + dputs(ERRMSG("quietgethist(ch->hist) returned NULL"));
> + return 1;
> + }
> + zle_setline(he);
> zlecs = ch->old_cs;
> return 0;
> }
From 97c195f6de8c566e88c0bb753aadc8217dc37875 Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@xxxxxxxxxx>
Date: Fri, 26 Jul 2019 17:17:40 +0200
Subject: [PATCH] zle_utils: fix incorrect use of dputs()
... that caused undefined symbols in a non-debug build
---
Src/Zle/zle_utils.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/Src/Zle/zle_utils.c b/Src/Zle/zle_utils.c
index d549b885b..2b306fdcd 100644
--- a/Src/Zle/zle_utils.c
+++ b/Src/Zle/zle_utils.c
@@ -1608,10 +1608,9 @@ unapplychange(struct change *ch)
{
if(ch->hist != histline) {
Histent he = quietgethist(ch->hist);
- if(!he) {
- dputs(ERRMSG("quietgethist(ch->hist) returned NULL"));
+ DPUTS(he == NULL, "quietgethist(ch->hist) returned NULL");
+ if(he == NULL)
return 1;
- }
zle_setline(he);
zlecs = ch->new_cs;
return 0;
@@ -1653,10 +1652,9 @@ applychange(struct change *ch)
{
if(ch->hist != histline) {
Histent he = quietgethist(ch->hist);
- if(!he) {
- dputs(ERRMSG("quietgethist(ch->hist) returned NULL"));
+ DPUTS(he == NULL, "quietgethist(ch->hist) returned NULL");
+ if(he == NULL)
return 1;
- }
zle_setline(he);
zlecs = ch->old_cs;
return 0;
--
2.20.1
Messages sorted by:
Reverse Date,
Date,
Thread,
Author