セキュリティキャンプ全国大会2020Z-V: 第二回ハッカソン
概要
第二回ハッカソン
前回からの進捗をまとめたり,最終的な着地点を決めたりした.
マージ
前回は第一目標であったPRの作成まで完了した.
2日程経って下のメッセージと共にマージされた
Thank you for your contribution to this repostiory. Due to energy reasons, this repostiory has recently lacked maintenance. I will improve this repostiory in the near future. (Including more comprehensive documentation/automated testing under different platforms/automated testing under different kernel versions etc.) If you have good ideas, you can communicate here at any time.
調査
マージされたけど,まだ使った事が無かったので使ってみる.
改めてドキュメントを読みながらコードを書いていたらいくつか問題に気付いたので,その改善を目標とする.
問題点
version
ドキュメント読んでて気付いたが,GitHubに最新のコードが無い.
crates.ioにあるバージョンは0.2.10
だが,GitHubのは0.2.7
lifetime
監視対象のパスを指定するのに,オリジナルでは文字列が&'static str
であった.
&'static
なデータはコンパイル時に確定している必要がある(という認識)ので,あまりにも不便である.
high_level
high_level.rs
に微細なミスがあったり,なんか使いづらったりする.
改善
version
最新のバージョンのソースコードが欲しいけど,やりとりを考えると時間がかかるのでずはforkを色々改善する.
lifetime
high_level
ここの改善が今後の目標となる.
nonblockingも使えるようにしたり, Fanotifyを生のfdから生やせるようにしたり, mountpointを監視対象に追加できるようにしたり, ちょっと綺麗にしたりした.
fanotify_event_metadata
にあるmask
はイベントの種類がビットマスクで設定されているが,これが厄介で,一つのmetadata
に複数のイベントが設定されることがある(man参照).
扱いが面倒なので,一旦enum
でイベントを定義した.
まだ実装が汚いので改善の余地あり.
また,high_level
にあるread_event
が微妙で,あまりhigh_levelな気がしないので,PoCにあったようなpoll
を使った実装も追加したい.
Comments