CVE-2012-どさにっき 〜2012年6月中旬〜

by やまや
<< = >>

2012年6月18日(月)

GNU sort

_ sort(1) でソートするときに基準となる列は -k n で指定する。

% ( echo hoge 2; echo fuga 1; echo piyo 3 ) | sort -k2
fuga 1
hoge 2
piyo 3

_ が、むかしは、+n で指定していた。-k は 1-origin だけど、+n は 0-origin。

% ( echo hoge 2; echo fuga 1; echo piyo 3 ) | sort +1
fuga 1
hoge 2
piyo 3

_ -k は最近の posix の仕様変更にしたがったもので、それによって +n は obsoleted になった。だからもう使うな、というのはわからんでもないが、このように引数に変更があった場合でも、ふつーは互換性のために古い使い方でも動作するように機能は残しておくもんだろう。しかし、最近の GNU sort ではコケる。

% ( echo hoge 2; echo fuga 1; echo piyo 3 ) | sort +1
sort: open failed: +1: No such file or directory
+n という名前のファイルをソートしたい場合に困るだろ、というのはまあわからんでもないが、それをいったら -xxx というファイルだって困るし、そのために -- というオプションもあるわけで、ぶっちゃけ、ふざけんな迷惑だからよけいなことすんな、というのが正直なところである。

_ GNU sort でも古めのものならふつーに +n が使える。CentOS4 までは大丈夫のようだ。CentOS5 では不可。FreeBSD は実は GNU 由来の sort を使っているが、とりあえず今のところは問題ないが、OSX Lion は +n が使えなかった…。ほかの *BSD もいずれそうなるんだろうか。

_ 調べてみたら、 環境変数を設定することで昔の動作になるらしい。

% ( echo hoge 2; echo fuga 1; echo piyo 3 ) | env _POSIX2_VERSION=199209 sort +1
fuga 1
hoge 2
piyo 3

_ ああよかった、じゃあ自分の環境にこいつを設定しておこうか、…ってなるかボケ。ふだんログインしてまわるマシンがいったい何台あると思ってるんだ。環境によって動作が違うのは混乱の元だが、かといってぜんぶ設定してまわるのも現実的でない。事実上、無理ということ。いろいろめんどくさいから昔から使えてた機能は obsoleted になってもちゃんと残しておいてくれよ。


2012年6月19日(火)

台風4号

_ 帰ってきたら窓から吹き込んだ雨で部屋が水びたしだった…。


<< = >>
やまや