Linux Kernelのfauzzingツールとして有名trinityを動かすとすぐにこんなエラーが出て止まりました。
[main] fd[419] = fopen /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-Virtual-2/edid (read-only) flags:0 fcntl_flags:0 *** invalid open call: O_CREAT or O_TMPFILE without mode ***: ./trinity terminated ======= Backtrace: ========= /usr/lib/libc.so.6(+0x72055)[0x7f3b3bd2b055] /usr/lib/libc.so.6(__fortify_fail+0x37)[0x7f3b3bdb25c7] /usr/lib/libc.so.6(+0xdbf6f)[0x7f3b3bd94f6f] ./trinity[0x4146c6] ./trinity(open_fds+0x2e)[0x413dfe] ./trinity(main+0x1be)[0x40ba3e] /usr/lib/libc.so.6(__libc_start_main+0xf0)[0x7f3b3bcd9610] ./trinity(_start+0x29)[0x40bde9] ======= Memory map: ========
フラグにO_CREAT or O_TMPFILEを設定している場合はmodeをセットしろということなので、とりあえずこのようにして対応。
diff --git a/fds/files.c b/fds/files.c index 98dbf33..938b19f 100644 --- a/fds/files.c +++ b/fds/files.c @@ -321,7 +321,7 @@ retry_flags: if (RAND_BOOL()) { randflags = get_o_flags(); - fd = open(filename, flags | randflags | O_NONBLOCK); + fd = open(filename, flags | randflags | O_NONBLOCK, 0666); } else { fd = open_with_fopen(filename, flags); fcntl_flags = random_fcntl_setfl_flags();
リバースエンジニアリング ―Pythonによるバイナリ解析技法 (Art Of Reversing)
- 作者: Justin Seitz,安藤慶一
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/05/22
- メディア: 単行本(ソフトカバー)
- 購入: 4人 クリック: 359回
- この商品を含むブログ (29件) を見る