From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id d7b3eec4 for ; Wed, 26 Jun 2019 10:20:10 +0000 (UTC) Received: (qmail 8872 invoked by alias); 26 Jun 2019 10:20:01 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: List-Unsubscribe: X-Seq: 44449 Received: (qmail 9485 invoked by uid 1010); 26 Jun 2019 10:20:00 -0000 X-Qmail-Scanner-Diagnostics: from mx1.redhat.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.101.2/25489. spamassassin: 3.4.2. Clear:RC:0(209.132.183.28):SA:0(-6.9/5.0):. Processed in 6.484797 secs); 26 Jun 2019 10:20:00 -0000 X-Envelope-From: kdudka@redhat.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _spf1.redhat.com designates 209.132.183.28 as permitted sender) From: Kamil Dudka To: zsh-workers@zsh.org Subject: [PATCH] {,un}applychange: do not call zle_setline(NULL) if quietgethist() fails Date: Wed, 26 Jun 2019 12:19:08 +0200 Message-Id: <20190626101908.548-1-kdudka@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Wed, 26 Jun 2019 10:19:18 +0000 (UTC) X-Qmail-Scanner-2.11: added fake Content-Type header Content-Type: text/plain 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 | 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