インプット・アウトプット

http://www.postgresql.jp/document/current/html/catalog-pg-type.html
pg_typeシステムカタログの記載を見ると、特定の型ごとに入力変換/出力変換関数を定義できるとある。
これを使えば、自分の定義した型の変数に対して例えば「'user_u:object_r:sepgsql_table_t:s0'」という文字列で入力が与えられた時に、このセキュリティコンテキストに対応するOid(32bit)を格納し、逆に読み出されたときには、Oidに対応するセキュリティコンテキストを吐き出すということが可能になる。

この方法を使うと、(1)セキュリティコンテキストを保持するためのストレージ領域が節約できる。(2)セキュリティコンテキストの長さ制限がなくなる。(3)構造が単純化するので、パフォーマンスが期待できる。と、良いことずくめ。

今まで進めてきた実装は、単純にセキュリティコンテキストを文字列で持たせていたが、こちらの方法の方が圧倒的に良い。
コードベースをPostgreSQL8.2に変えるタイミングで、セキュリティコンテキストの保持の方法を見直してみよう。

TODO: 週末にかけての予定
10/27 CE Linux Forumで講演(XATTR/JFFS2)
10/28 OSC2006 Tokyo/Fallで講演(SELinuxとコミュニティ開発)
10/28夜 WORD定例会、お好み焼き。
がんばろう。