	FML Security Advisory 1999-005: How to fix Y2K in old fml packages
	========================================

Topic:		2000年問題について

			Ken'ichi Fukamachi <fukachan@sapporo.iij.ad.jp>

	Copyright (C) 1999 Ken'ichi Fukamachi
		All rights reserved.

[Abstract]

わかっている範囲の問題と対応しているversionについての情報です。

READMEの通りY2Kに限らず汎用的な答えはいつも『currentを使う』です。

------------------------------------------------------------
1	修正ツールについて

2	Overview

3	メールの Date: フィールド

4	ログファイルのalign問題
4.1	Overview
4.2	対応

5	RFC1153モード
------------------------------------------------------------


1	修正ツールについて

	ftp://ftp.iij.ad.jp/pub/IIJ/dist/fukachan/fml/y2k-fix.tar.gz

から入手して下さい。これを広げると fix-gettime.pl というコマンドが入っ
ています。&GetTimeとはなにか？は次の章で説明されています。
この関数の定義を直す(関数の最後に正しいコードを付け加えて該当する変数
を上書きしてしまう)コマンドです。

以下ディレクトリ名などは適当に読みかえて下さい。

1.  パッケージをひろげて fix-gettime.pl を取り出す。

2. ＭＬをとめる

3. 念のため/usr/locla/fml/のバックアップをとります。

例:

   % cp -pr /usr/local/fml /usr/local/fml.bak

4. fix-gettime.pl を走らせて、'sub GetTime' という関数定義のあるファイ
ルに全部パッチを当てる。

例: どのファイルか分からない時はとりあえず全部にあててしまえばOKでしょ
う。無関係なファイルは無修正のままになるだけです。

   % perl -i.bak fix-gettime.pl /usr/local/fml/*pl

file permissionが変わるかも知れないので、この後に念のため

   % chmod 755 /usr/local/fml/fml.pl /usr/local/fml/msend.pl

などしておいてください。

2	Overview

元々必要に応じて呼ばれるフィルタリングプロセスのため時間に依存する関数
というものがそもそもありません。問題になりうるとすればヘッダに現れる日
付やログファイルのフォーマットなどの部分です。

日付については &GetTime という関数にまとめられています。ほとんどすべて
のソースはこの関数を使っています。必ずしも一箇所にまとめられているわけ
ではありませんが、関数名は全部一緒です。そのためチェックする場合はこの
関数の中を見ます。

自分で直す場合は fml-current の fml.pl から

sub GetTime
{

	〜略〜

}

の部分を抜き出して、各ソースのこの部分を置き換えればOKです。
/usr/local/fml/src/ の下にあるようなものについてはこれで修正が可能とお
もいます。

(標準ではインストールされない) contrib/の特殊なものについてはこの関数
が日付設定以上のことをしていることもままあるのできをつけてください。
＃もちろん手っとり早いのは fml-current にいれかえることです。

3	メールの Date: フィールド

配送されるメールなどについては、2.1A#20 以降は4桁
fml.pl revision: 1997/12/07 fml.pl 2.0.24.49

RFC1123 に合わせた(RFC822 はそもそも間違っている;D)
＃注:実は2000年問題を意識した作業ではなく結果としてそうなっている

2.2A#35 以降では contrib/ 以下など特殊なソースの中のについても(たぶん
使っていなくても) &GetTime は修正済み

4	ログファイルのalign問題

4.1	Overview

2000年になると log と summary が 100/01/01 のようになる。ちょっとかっ
こ悪い。一意であることが必要ないのと、100年前のログファイルをとってお
くとはおもえないので、ログファイルの類いは100年以下の単位にしている(例:
2000年は0年)。

4.2	対応

○ 2.2A#14 以降は次のようになる
fml.pl revision: 2.2.1.7 (1998/11/06)

	' 0/01/01' (２桁にしているが、スペースが入ったalignment)

ちょっと間が抜けているかも…

○ 2.2A#32 以降(makefmlを除く)は次のようになる
fml.pl revison: 2.12 (1999/02/13)

	00/01/01 (0 でパディングされたalignment)

○ 2.2A#35以降 makefml も修正

	00/01/01 (0 でパディングされたalignment)

2.2A#35 以降では contrib/ 以下など特殊なソースの中のについても(たぶん
使っていなくても)修正済み

5	RFC1153モード

元々適当につけているので、何が正しいのか良く分からないという問題がある
が…(だってRFC1153ってメモみたいなRFCでよくわからない)。

2000年になると vol 100 になるが…それはそれで構わないような気もするし、
構うようなきもする。

