Package: mlterm-im-uim
Version: 2.9.4-4
Severity: important

I can't type internationalized text on mlterm using uim with this
package.  It fails at initialization time: e.g.

[EMAIL PROTECTED] /dvl/debian/mlterm/mlterm-2.9.4
$ mlterm
*** ERROR HAPPEND ***  <garbage>: No such conversion engine.
*** ERROR HAPPEND ***  uim: Could not open.

where I replaced garbage with <garbage> to avoid non-ASCII characters.
This is 100% repeatable on my computer, but it may not be on others.
Reproducibility may be affected by libuim version and heap size
parameter for uim.

This is caused by an incorrect usage of a uim API in
inputmethods/uim/im_uim.c, im_uim_new().  The problem occurs if a
string returned by uim gets freed (GC'd) prematurely within uim, in
which case mlterm dereferences invalidated region of memory.  The
patch solves this by duplicating the string before use.

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.26-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=ja_JP.UTF-8, LC_CTYPE=ja_JP.UTF-8 (charmap=EUC-JP) (ignored: 
LC_ALL set to ja_JP.eucJP)
Shell: /bin/sh linked to /bin/dash

Versions of packages mlterm-im-uim depends on:
ii  libc6                         2.7-16     GNU C Library: Shared libraries
ii  libuim6                       1:1.5.3-1  Simple and flexible input method c
ii  mlterm                        2.9.4-4    MultiLingual TERMinal

mlterm-im-uim recommends no packages.

mlterm-im-uim suggests no packages.

-- no debconf information

===File /dvl/debian/mlterm/engine-for-debian.diff===========
--- ../orig/inputmethod/uim/im_uim.c    2006-04-05 05:47:22.000000000 -0500
+++ inputmethod/uim/im_uim.c    2008-11-22 20:12:04.000000000 -0600
@@ -1512,6 +1512,9 @@
        if( engine == NULL || strlen( engine) == 0)
        {
                engine = (char*)uim_get_default_im_name( kik_get_locale()) ;
+               /* The returned string's storage is invalidated when we
+                * call uim next, so we need to make a copy.  */
+               engine = kik_str_alloca_dup (engine);
        }
 
        if( ! find_engine( engine , &encoding_name))
============================================================



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to