[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[palm-unix-j:00212] patch for 0.99


I tried jpilot-0.99pre and found some problems:
   memory leaks or illegal access,
   incompleted internationalization(i18n)s, 
   some bugs in japanese convetion code,
and so on.

Please examine my patch.
the patch includes the work to po/ja.po by Mr. Kawashima.
you can get patch from http://www.da-cha.org/jpilot/ 
you also show the problem&fix list atached this mail as follows:

   address.c: urgency=high, SEGV fault in libc,

     address_compare() called from qsort() has the problem in 
     the multilingual language. it use strncpy(), so it cannot
     determine multilingual charactor bound. then it chops multi-byte
     chars to half incomplete byte. it caused SEGV fault.
     solution: theres two type solution.
        a.  use strcpy and use buffer that has enough length. 
        b.  use multibyte_safe_strncpy() that I implemented in utils.c.
     I adopt (a.) in this case because the str length is short enough. 


  datebook_gui.c: urgency=mid, unintelligible sequence of characters in cats widget,
     add translation code.

                : urgency=low, incomplete gettextize  
     change "Cats" to _("Cats") .

  japanese.c: urgency=high, unintelligible argolism.

     there changes the length with some japanese code in code convertion, 
     it is at worst TWICE or half as a source string.
     (Some charcodes of Extend Unix code(EUC) that is 1byte in the Shift-JIS
       is 2byte: Japanese Kana)

     replace whole codes to one using Samba project.
      # I am a Samba JP localization developer.....


  jpilot.c: urgency=mid, incompleted gettextize.

   1.  ' gettext("Help/About "PN) '  is not good idea. change it to 
    char *about = gettext("Help/About %s")
    sprintf(buf, about, PN);

   2.  gettextize 'char *text[]=("str1", "str2");print text[1];'
    to 'char *text[]=(gettext_noop("str1"),....);print gettext(text[1]);'
  memo.c: urgency=high, SEGV fault.

    the promlem is same as address.c
    solution is (b).  please see description about address.c 
  memo_gui.c: urgency=high, SEGV fault.

    it assumes memo has at least one '¥n'. But you make one liner memo.
    it easily happens memo == 'foo boo bar¥0'
    memccpy(str, memo, '/n', len) makes memory runnaway.

    calculate len exactly include this case.

    # there seems more problems yet.... 
    now i cannot test it in multibyte environment....
    additional infomation will be send....
            : urgency=high, SEGV fault.

      if category == CATEGORY_ALL, memo_app_info.category.name[category] 
      fails.   length of memo_app_info.category.name is 16, ...._ALL is 300.

  sync.c: urgency=mid,  unintelligible sequence of characters in the log on palm device,

      add code convertion.


  todo.c: urgency=mid, incomplete i18n,

      use strcoll() instead of strcmp()

            : urgency=high, SEGV fault.

      if category == CATEGORY_ALL, todo_app_info.category.name[category] 
      fails.   length of todo_app_info.category.name is less than 300.


  utils.c: urgency=high, unintelligible sequence of characters in whole jpilot messages.

     gettextize. gtk function arguments.

  utils.c,utils.h: urgency=high, add function using memo.c.
     add multibyte_safe_strncpy().

  po/jpilot.pot, po/*.po: update pot and po.

Hiroshi Miura  --- http://www.momokuri.org/  http://www.Hokkaid.org/
http://lkh.linux.or.jp/  http://www.samba.gr.jp/ http://alsa.linux.or.jp/ 
http://www.blue.gr.jp/  TLUG, TLUC-Kanto, YLUG-Diet, CLUG, Palm<->Linux
Powered by Tankiyo, Danke, SuiSui, Kisuke, SterBucks, DE STEIL
CCNA, Oracle Silver Master, Network Specialist(JITEC)