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

[freewnn:00725] recent patches



小野寛生です。

<URL:http://homepage2.nifty.com/onlife/FreeWnn/patch/FreeWnn-20010826a.diff.gz>
に cvs repository に入っている最新の source に対する patch をおきまし
た。commit する前にある程度確認が必要と思っていますので、見て下さるよ
うお願いします。
いまのところ、2001/05 半ば頃の FreeBSD 4.3-STABLE で make が通ること
(--enable-ipv6)、jserver が立ち上がること、uum の起動に失敗することの
み確認しています。
% 任意の path にファイルが作成できてしまう問題の対処は確認していません。

変更点 (i.e. あてた patch):
(1) jserver_dir 以外へのファイル作成を禁止する [freewnn:00699]
(2) IPv6 対応修正ほか [freewnn:00716]
(3) uum patch [freewnn:00676]

私が勝手に変更した部分について:
(1) configure.in で、--disable-unsafe-path を指定すると、
    config.h で WNN_ALLOW_UNSAFE_PATH を定義するようにしました。
    これにより、[freewnn:00699] の patch による変更が無効になります。
(2) uum patch [freewnn:00676] については、
  ・magic number を LANGDIRLEN マクロにするなど一部変更しています。
    ([freewnn:00722], [freewnn:00723] 参照)
  ・FreeBSD だと getpgrp() の引数は void なんですが、なんで、
        pid = getpgrp (pid); (in Wnn/uum/jhlp.c)
    となっているんでしょう? (compile 通らないので、直してあります)。
  ・sheader.h で prototype 宣言されている関数に
    o 使用されていないと思われるもの。
    o OS の提供するヘッダファイルに含まれるもの
    があったので、見つけた分はコメントアウトしました。
    問題なければ削除します。
(3) ANSI/ISO C prototype をサポートするか?
    Wnn/include/wnn_os.h に (実は、-a018 にも入れてあったんですが、
    そこから意味もなくちょっとだけ変えてあります) ANSI/ISO C の
    prototype と K&R C の prototype の両方をサポートするよくある
    マクロをいれたのですが、

    /* ISO C and K&R compatibility */
    #if !defined(_P)
    # if (defined(__STDC__) && (__STDC__)) || defined(_cplusplus)
    #  define _P(p) p
    # else
    #  define _P(p) ()
    # endif
    #endif
    
    これをこの先使うようにしますか?
    するのであれば、既存の部分も (一気にはつらいので) 徐々に置き換えて
    ゆこうかと思うのですが。
    それとも、現行の K&R スタイルのまま通した方がよいでしょうか?

    いまのところ、Wnn/uum/sheader.h の前の方を少し書き換えてあります。

(4) とりあえずコメントアウトしただけですが、shared library 対応は
    configure.in 中の、
        AC_PROG_LIBTOOL
        AC_SUBST(LIBTOOL_DEPS)
    で出来ているので、

        dnl AM_PROG_LIBTOOL

        dnl AC_ARG_ENABLE(sharedlib,
        dnl [  --enable-sharedlib      build shared library using GNU libtool],
        dnl  [if test "$enableval" = yes
        dnl   then
        dnl     use_sharedlib=yes
        dnl   else
        dnl     use_sharedlib=no
        dnl   fi], [use_sharedlib=default])

    の部分をはずすつもりでいます。


ChangeLog:

とりあえず、こんな風に Changelog 書いてみているんですが、どうでしょう。
(濱嶋さんの patch についてはまだ書いていません)。

        * jserver を動かしている user の権限で remote から任意のファイルを
          作成されてしまう問題への対策。
          jserver_dir 以外へのファイル作成を禁止する。
          ([freewnn:00699] うかい@debian さん via いしかわ@debian さん)
          運用によっては、問題がある場合が考えられるので、configure で
          OFF にできるようにした (その場合は、せめて ipfilter 等で想定して
          いない host からの接続を禁止すべきであろう)。
          将来的には、tcp_wrappers 対応、なんらかの認証機構等、もっとまし
          な security を実現すべきだが、この問題は KKTP そのものの設計の
          問題なので、よく考えて設計しなおすべきであろう。
          Manpower を言い訳にして、とりあえず課題として挙げるに留める。
        * ISO C 対応を視野にいれ、_P マクロ (in wnn_os.h) を定義した。
          (本当はもう少し前にいれてあったが)。
          徐々に、これを使って prototype 宣言を行なうように変更して行く予定。
        * uum patch ([freewnn:00676] いいじまさん)
          cuum, kuum, tuum については同様の変更を追加予定だが、今回は
          uum のみ。

        * Put workaround for remote vulnerability that allow to create
          a file in an arbitrary path.
          ([freewnn:00699] by Mr.Ukai via Mr. M.Ishikawa).
          As it breaks the traditional feature (the problem itself!) of
          FreeWnn, this workaround can be turned off in configure.   
          But if you want to do so, you should at least forbid accesses  
          from unexpected hosts using ipfilter or equivalent.
          More secure solutions like adding tcp_wrappers feature or 
          some kind of authentication, but as the problem came from the 
          design of KKTP itself, we should be careful what solution we
          will make. Due to the poor manpower, this will take time.  
        * Added _P macro in wnn_os.h to support ISO C (and current K&R
          style) in the future.
          I am planning to change prototypes to be written with the macro.
        * Uum support again ([freewnn:00676] by Mr. K.Iijima).
          There is no cuum, kuum, tuum support yet, but there will be.


http://www.freewnn.org/ FreeWnn Project