[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freewnn:00409] about uum for jserver
- To: freewnn@tomo.tomo.gr.jp
- Subject: [freewnn:00409] about uum for jserver
- From: Kengo IIJIMA <iijima@XXXX>
- Date: Wed, 05 Jul 2000 18:57:24 +0900
- Reply-To: freewnn@tomo.gr.jp
こんにちは、いいじま@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
{