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

[PATCH] Fix #87 - Segfault fault when autocompleting after ">" in, "!> ."



Dear zsh developers,

Bug #87 in the SF bug tracker (which is not used anymore if I understood correctly) claims that when hitting tab to complete after '>' in the string "!> cmake ..", zsh crashes. I could reproduce the bug that also appears with the string "!> .".

Here is a patch that works around this bug by checking whether s is null in the get_comp_string function (zle_tricky.c) before a code that seems to assume that s is not null. The get_comp_string function is full of warnings like "abandon all hopes" and "This function is a nightmare" so I didn't try to know whether s being null at this point is correct.

It is unclear to me how to send a patch for zsh so please let me know if something is wrong or if additional steps are necessary to apply this patch.

Best,
Raphaël

From ced2387dc8dc65aecc34ecde29924810126a48be Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rapha=C3=ABl=20Jakse?= <raphael.jakse@xxxxxxx>
Date: Fri, 25 Nov 2016 17:14:39 +0100
Subject: [PATCH] Fix #87 - Segfault when autocompleting after ">" in  "!> ."

The fix is a workaround that checks whether s is null in the get_comp_string
function (zle_tricky.c) before a code that seems to assume that s is not null
get_comp_string.
---
 Src/Zle/zle_tricky.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c
index c8d3bb3..18ec47a 100644
--- a/Src/Zle/zle_tricky.c
+++ b/Src/Zle/zle_tricky.c
@@ -1518,7 +1518,7 @@ get_comp_string(void)
 	zlemetaline = tmp;
 	zlemetall = strlen(zlemetaline);
     }
-    if (t0 != STRING && t0 != TYPESET && inwhat != IN_MATH) {
+    if (!s || (t0 != STRING && t0 != TYPESET && inwhat != IN_MATH)) {
 	if (tmp) {
 	    tmp = NULL;
 	    linptr = zlemetaline;
-- 
2.9.3



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