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 c31ccc0d for ; Tue, 23 Jul 2019 13:46:36 +0000 (UTC) Received: (qmail 1970 invoked by alias); 23 Jul 2019 13:46:28 -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: 44566 Received: (qmail 26125 invoked by uid 1010); 23 Jul 2019 13:46:28 -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/25517. spamassassin: 3.4.2. Clear:RC:0(209.132.183.28):SA:0(-6.9/5.0):. Processed in 0.788516 secs); 23 Jul 2019 13:46:28 -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: Oliver Kiddle Cc: Peter Stephenson , zsh-workers@zsh.org Subject: [PATCH v2] {,un}applychange: do not call zle_setline(NULL) if quietgethist() fails Date: Tue, 23 Jul 2019 15:45:48 +0200 Message-Id: <20190723134548.10998-1-kdudka@redhat.com> In-Reply-To: <797-1561676485.902916@C-Cf.WCnE.5Cn6> References: <797-1561676485.902916@C-Cf.WCnE.5Cn6> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.49]); Tue, 23 Jul 2019 13:45:50 +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 | 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; } -- 2.20.1