やっとOpenBSDにもdrmがキター。
drmであってもカーネルモジュールにはしないあたりがOpenBSDらしいな。
で、さっそくconfig(8)してカーネルビルドっと。
$ dmesg | grep drm
radeondrm0 at vga1
info: [drm] ATI Radeon LY RV100 Mobility M6 (unit 0)
[drm:pid0:drm_load]
[drm:pid0:radeon_driver_load] AGP card detected
[drm:pid0:drm_agp_init] agp_available = 1
info: [drm] AGP at 0xd0000000 256MB
[drm:pid0:drm_ctxbitmap_next] drm_ctxbitmap_next bit : 0
[drm:pid0:drm_ctxbitmap_init] drm_ctxbitmap_init : 0
info: [drm] Initialized radeon 1.28.0 20060524
認識はしてるので、
あとはdriのビルドを有効にしたXを用意すれば(現在のxenocaraではdriはビルドされない)、
OpenBSDでもOpenGLがまともな速さで動作するようになる。
まあprivsepされたXからどうやってこれを呼ぶのかは知らないけど。
IPv6関係でリモートホール
トップページも、
Only two remote holes in the default install, in more than 10 years!
になってるな。
OpenBSD/2007/01/05/uimへの反応。
race condition は F_SETLKW で lock しているのでたぶん大丈夫かなと思います。
ファイルを開くタイミングの話ではなく、
開こうとしているファイルの安全を確認してから開いているかどうか、
という意味で書いたのでした(これもrace conditionの範疇です)。
- 第三者に予測可能なファイル名をもつファイルを、
- regular fileかどうかのチェック、ファイルownerのチェックを行わず、
- fopen(fn, "w")で
開いているので、どうなんだろうな、と思ったのです。
が、skk.cを良く読んでみると、
skk-uim-personal-dic-filenameと同じディレクトリにファイルを置くので、
これはおそらく問題ありません。私の誤読でしたので訂正します。
ところで、uim-helper.cのuim_helper_get_pathnameと
prime.cのprime_get_ud_pathは、"/tmp"上に作るので、
こちらは上記の問題があるのではないでしょうか。
popen の方は alphabet 以外の文字は渡らないようにしてありますがどうなんでしょう?
popen(というよりsh)のglobbing ruleを気にするくらいならば、
昔ながらのfork, exec, pipeをすべきではないでしょうか。
これだと、それぞれの段階でエラー処理を制御できるので、
問題点を洗い出しやすいコードになるのではないかと思います。
一方、popenでは満足なエラー通知はできません(OpenBSD-man:popenのBUGS参照)。
OpenBSD/2007/01/04/uimの続き。
ホスト名に環境変数SKKSERVERを無視して指定できるようにした。
これでサーバのデバッグが簡単になる(全世界の0.1%以下の人向け)。
skkdic->hostnameのメモリリークがあるかも。ちょっと自信がない。
それはそうと、skk.c全体を見るに、
rskk_save_personal_dictionaryはrace conditionを起こせそうだし、
popenしている所もちょっと危うげですな。暇があったら直そう。