zsh-workers
 help / color / mirror / code / Atom feed
* PATCH: fix line-length calculation in zle_refresh.c:singlerefresh()
@ 2010-08-02  3:49 Daiki Ueno
  2010-08-02  9:03 ` Peter Stephenson
  0 siblings, 1 reply; 2+ messages in thread
From: Daiki Ueno @ 2010-08-02  3:49 UTC (permalink / raw)
  To: zsh-workers

[-- Attachment #1: Type: text/plain, Size: 501 bytes --]

Hi,

If multibyte support is enabled and TERM is dumb, typing double-width
characters causes segmentation fault:

ueno@localhost % LANG=en_US.utf8 TERM=dumb zsh -f
localhost% <-- type あ with some input method
*** glibc detected *** zsh: free(): invalid next size (fast): 0x00000000018dd500 ***
zsh: abort (core dumped)  LANG=en_US.utf8 TERM=dumb zsh -f

This is because zle_refresh.c:singlerefresh() does not calculate the
size of new line buffer correctly.  Here is a patch for this.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Fix-line-length-calculation-in-zle_refresh.patch --]
[-- Type: text/x-patch, Size: 935 bytes --]

>From 9f9268512c0ab717e67d9e6881d44dd1cdaa37b2 Mon Sep 17 00:00:00 2001
From: Daiki Ueno <ueno@unixuser.org>
Date: Mon, 2 Aug 2010 12:37:41 +0900
Subject: [PATCH] Fix line-length calculation in zle_refresh.

---
 Src/Zle/zle_refresh.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/Src/Zle/zle_refresh.c b/Src/Zle/zle_refresh.c
index 352dcf0..f03e7dc 100644
--- a/Src/Zle/zle_refresh.c
+++ b/Src/Zle/zle_refresh.c
@@ -2341,7 +2341,7 @@ singlerefresh(ZLE_STRING_T tmpline, int tmpll, int tmpcs)
 	if (tmpline[t0] == ZWC('\t'))
 	    vsiz = (vsiz | 7) + 2;
 #ifdef MULTIBYTE_SUPPORT
-	else if (iswprint(tmpline[t0]) && (width = WCWIDTH(tmpline[t0]) > 0)) {
+	else if (iswprint(tmpline[t0]) && ((width = WCWIDTH(tmpline[t0])) > 0)) {
 	    vsiz += width;
 	    if (isset(COMBININGCHARS) && IS_BASECHAR(tmpline[t0])) {
 		while (t0 < tmpll-1 && IS_COMBINING(tmpline[t0+1]))
-- 
1.7.2




Regards,
-- 
Daiki Ueno

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: PATCH: fix line-length calculation in zle_refresh.c:singlerefresh()
  2010-08-02  3:49 PATCH: fix line-length calculation in zle_refresh.c:singlerefresh() Daiki Ueno
@ 2010-08-02  9:03 ` Peter Stephenson
  0 siblings, 0 replies; 2+ messages in thread
From: Peter Stephenson @ 2010-08-02  9:03 UTC (permalink / raw)
  To: zsh-workers

On Mon, 02 Aug 2010 12:49:01 +0900
Daiki Ueno <ueno@unixuser.org> wrote:
> If multibyte support is enabled and TERM is dumb, typing double-width
> characters causes segmentation fault:
> 
> ueno@localhost % LANG=en_US.utf8 TERM=dumb zsh -f
> localhost% <-- type あ with some input method
> *** glibc detected *** zsh: free(): invalid next size (fast):
> 0x00000000018dd500 *** zsh: abort (core dumped)  LANG=en_US.utf8
> TERM=dumb zsh -f
> 
> This is because zle_refresh.c:singlerefresh() does not calculate the
> size of new line buffer correctly.  Here is a patch for this.

Thanks, I've applied this.

-- 
Peter Stephenson <pws@csr.com>            Software Engineer
Tel: +44 (0)1223 692070                   Cambridge Silicon Radio Limited
Churchill House, Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, UK


Member of the CSR plc group of companies. CSR plc registered in England and Wales, registered number 4187346, registered office Churchill House, Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, United Kingdom


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-08-02  9:03 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-02  3:49 PATCH: fix line-length calculation in zle_refresh.c:singlerefresh() Daiki Ueno
2010-08-02  9:03 ` Peter Stephenson

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).