kdvelectronics サイトから ssh セッション ログ パッチを sshd に変更しようとしています。
コードは openssh 4.x から 5.x にあまり変更されていませんが、script_open 関数が呼び出されると sshd segfaults が発生するようになりました (gdb によると)。
コアは「sshd: root [priv]」によって生成されました。 プログラムはシグナル 11、セグメンテーション違反で終了しました。 #0 0x00007f687910ae69 in vfprintf () from /lib/libc.so.6 (gdb) ところで #0 0x00007f687910ae69 in vfprintf () from /lib/libc.so.6 #1 /lib/libc.so.6 の __fprintf_chk() 内の 0x00007f68791a98c2 #2 script_open()で0x000000000044ed03 #3 メインの 0x000000000040ad2c ()
クラッシュするコードは次のとおりです。
strftime(logname, sizeof(logname), "%F.%T", gmtime(&tvec));
また
snprintf(fname, sizeof(fname), "%s/openssh.%s.%08x.typescript", SCRIPTDIR, username, rnd);
script.c の完全なリストはこちらhttp://pastebin.com/48B39K8sです。50行目をコメントし、53 行目から logname 変数を削除しました。
これらの関数が segfault を引き起こす 2.3 以降の glibc の変更点や、それについてどこで読むべきかを知りたいだけです。