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

[freewnn:00409] about uum for jserver



 こんにちは、いいじま@LASER5です。

 uum を動かそうと思い立ちまして、小さな修正で Linuxの
console + kon2上にて、動くことを確認しました。
 $ uum -u
として、tty側を UJISに設定する必要があります。

・環境
 egcs-1.1.2(gcc 2.91.66)
 glibc-2.1.3
 ncurses-5.0
 kon2-0.3.9b( terminal type は kon )

 FreeWnn-1.1.1-a017用の修正です。

- juum.patch
 Xsi/configure.in        に、CRYPT_LIBRARYESを設定追加。
 Xsi/Wnn/Makefile.in     に、UUMDIRを追加。
 Xsi/Wnn/uum/Makefile.in に、CRYPT_LIBRARYESを設定追加。
 Xsi/Wnn/uum/jhlp.c 
  + -L の引数長さをチェックしていないため、追加(32文字以内に収める)
  + extern char *index(); 類を #ifを使って Linux場合は外す。
 Xsi/Wnn/uum/wnnrc_op.c
  + extern char *strchr(); 類を #ifを使って Linux場合は外す。

- linux_locale.patch
 Xsi/Wnn/etc/msg.c
  setlocale(LC_ALL,NULL)では、glibc 2.1で必ず Cが返ってきてしまう為、
  #ifdef を使って、setlocale(LC_ALL,"") を使う用に追加。

 パッチを添付しておきます。あてた後に、autoconfしてから
configureを実行すれば、構築可能だとおもいます。


 ただ、この修正を行なった後に、
   http://www.tomo.gr.jp/users/wnn/index.html
で uumをキーにして検索したところ...、

== [freewnn:00127] Re: patch-1.1.1-a006 

AC_CHECK_LIB(crypt, crypt)
AC_CHECK_LIB(socket, connect)
AC_CHECK_LIB(nsl, gethostbyname)

で設定されている。
 -> configure.inまたは Wnn/uum/Makefile.inの変更がおかしい?

== [freewnn:00138] Fw: [BUGTRAQ-JP] Kana-Kanji FEP "uum" overflow exploit 
 -> do_D_opt の strcpyは修正していないため、Security Holeがある。

== [freewnn:00142] Re: libcurses 
 -> ncursesで動作するのは良いとして、cursesでの動作は?

 ということに気がつきました。ということで、本当に動くだけの
patchだと思います。

-- 
 飯島賢吾 // E-Mail: iijima@laser5.co.jp
diff -Nurd FreeWnn-1.1.1-a017.orig/Xsi/Wnn/Makefile.in FreeWnn-1.1.1-a017/Xsi/Wnn/Makefile.in
--- FreeWnn-1.1.1-a017.orig/Xsi/Wnn/Makefile.in	Sun Jan 30 13:32:01 2000
+++ FreeWnn-1.1.1-a017/Xsi/Wnn/Makefile.in	Wed Jul  5 13:13:08 2000
@@ -53,7 +53,9 @@
 
 JLIBV3DIR = jlib.V3
 
-SUBDIRS = $(JDDIR) $(JSERVERDIR) $(JLIBDIR) $(WNNCLIENTSDIR) $(WNNJUTILDIR)         $(PUBDICPLUSDIR) $(WNNCONSDIR) $(WNNMANDIR) $(WNNENVDIR) $(JLIBV3DIR)
+UUMDIR = uum
+
+SUBDIRS = $(JDDIR) $(JSERVERDIR) $(JLIBDIR) $(WNNCLIENTSDIR) $(WNNJUTILDIR)         $(PUBDICPLUSDIR) $(WNNCONSDIR) $(WNNMANDIR) $(WNNENVDIR) $(JLIBV3DIR)          $(UUMDIR)
 
 install::
 	@for flag in ${MAKEFLAGS} ''; do \
diff -Nurd FreeWnn-1.1.1-a017.orig/Xsi/Wnn/uum/Makefile.in FreeWnn-1.1.1-a017/Xsi/Wnn/uum/Makefile.in
--- FreeWnn-1.1.1-a017.orig/Xsi/Wnn/uum/Makefile.in	Fri Jan 21 01:01:38 2000
+++ FreeWnn-1.1.1-a017/Xsi/Wnn/uum/Makefile.in	Wed Jul  5 13:13:08 2000
@@ -37,7 +37,7 @@
        INCLUDES = -I$(WNNINCLUDESRC) -I$(WNNROMKANSRC)
         DEFINES = $(SIGNAL_DEFINES) $(WNNDEFINES) $(WNNLANGDEF)
 LOCAL_INSTFLAGS = $(INSTUIDFLAGS) -o $(UUMOWNER)
-LOCAL_LIBRARIES = $(WNNJLIB) $(WNNCONVLIB)
+LOCAL_LIBRARIES = $(WNNJLIB) $(WNNCONVLIB) @CRYPT_LIBRARYES@
 
 SRC1= epilogue.c header.c kensaku.c kuten.c jis_in.c       prologue.c touroku.c jikouho.c jutil.c w_string.c       printf.c termio.c hinsi.c termcap.c       ttyfdslot.c setutmp.c redraw.c history.c key_bind.c       screen.c basic_op.c uif.c cursor.c jhlp.c       select_ele.c inspect.c wnnrc_op.c functions.c
 
diff -Nurd FreeWnn-1.1.1-a017.orig/Xsi/Wnn/uum/jhlp.c FreeWnn-1.1.1-a017/Xsi/Wnn/uum/jhlp.c
--- FreeWnn-1.1.1-a017.orig/Xsi/Wnn/uum/jhlp.c	Thu Feb 24 01:08:49 2000
+++ FreeWnn-1.1.1-a017/Xsi/Wnn/uum/jhlp.c	Wed Jul  5 13:13:19 2000
@@ -163,7 +163,8 @@
         {
           if (i >= argc || argv[i][0] == '-')
             default_usage ();
-          strcpy (lang_dir, argv[i++]);
+	  strncpy (lang_dir,argv[i++], 32);
+	  lang_dir[strlen(lang_dir)+1] = '\0';
           for (; i < argc; i++)
             {
               argv[i - 2] = argv[i];
@@ -180,8 +181,8 @@
         {
           if (strlen (p) >= 4)
             {
-              strncpy (lang_dir, p, 5);
-              lang_dir[5] = '\0';
+              strncpy (lang_dir, p, 32);
+              lang_dir[strlen(lang_dir)+1] = '\0';
             }
           else
             {
@@ -635,10 +636,13 @@
   register char *default_ostr = OPTIONS;
   char ostr[64];
   register char *p;
-#ifdef  SYSVR2
+#if defined(SYSVR2)
 #define index   strchr
 #endif /* SYSVR2 */
+
+#if !defined(linux)
   extern char *index ();
+#endif
 
   strcpy (ostr, default_getoptstr);
   strcat (ostr, lang_db->getoptstr);
diff -Nurd FreeWnn-1.1.1-a017.orig/Xsi/Wnn/uum/wnnrc_op.c FreeWnn-1.1.1-a017/Xsi/Wnn/uum/wnnrc_op.c
--- FreeWnn-1.1.1-a017.orig/Xsi/Wnn/uum/wnnrc_op.c	Thu Feb 24 00:31:45 2000
+++ FreeWnn-1.1.1-a017/Xsi/Wnn/uum/wnnrc_op.c	Wed Jul  5 13:13:08 2000
@@ -132,7 +132,7 @@
   int noerr, expandsuc;
   struct passwd *u;
   extern struct passwd *getpwnam ();
-#if defined(SYSVR2) && !defined(AIXV3)
+#if defined(SYSVR2) && !defined(AIXV3) && !defined(linux)
   extern char *strchr ();
 #endif /* defined(SYSVR2) && !defined(AIXV3) */
 
diff -Nurd FreeWnn-1.1.1-a017.orig/Xsi/configure.in FreeWnn-1.1.1-a017/Xsi/configure.in
--- FreeWnn-1.1.1-a017.orig/Xsi/configure.in	Fri Mar 17 01:15:32 2000
+++ FreeWnn-1.1.1-a017/Xsi/configure.in	Wed Jul  5 13:13:08 2000
@@ -51,17 +51,20 @@
 
 
 dnl
-dnl Checks for cc and cpp.
+dnl Checks for cc and cpp,libcrypt
 dnl
 AC_PROG_CC
 AC_MSG_CHECKING(for cpp)
 hosttype=`uname`
 CCOPTIONS=""
 CDEBUGFLAGS=-O
+CRYPT_LIBRARYES=""
+
 case $hosttype in
 "Linux")
     CCOPTIONS="-Dlinux -D_POSIX_SOURCE -D_BSD_SOURCE"
     CDEBUGFLAGS="-O2 -fno-strength-reduce"
+    CRYPT_LIBRARYES=-lcrypt
     if test -x /lib/cpp; then
         CPP=/lib/cpp
     fi
@@ -175,6 +178,7 @@
 AC_PROG_RANLIB
 AC_SUBST(CCOPTIONS)
 AC_SUBST(CDEBUGFLAGS)
+AC_SUBST(CRYPT_LIBRARYES)
 
 dnl Checks for libraries.
 dnl ### dnl Replace `main' with a function in -lFS:
--- FreeWnn-1.1.1-a017/Xsi/Wnn/etc/msg.c.orig	Tue Jul  4 21:12:47 2000
+++ FreeWnn-1.1.1-a017/Xsi/Wnn/etc/msg.c	Tue Jul  4 21:14:14 2000
@@ -124,7 +124,11 @@
   if (lang == NULL || *lang == '\0')
     {
 #ifdef  HAS_SETLOCALE
+#ifdef linux
+      lang = setlocale (LC_ALL, "");
+#else
       lang = setlocale (LC_ALL, NULL);
+#endif
       if (lang == NULL || *lang == '\0')
 #endif
         {