仲村です
そういえば、sigaction とか使って書こうとして挫折した記憶があります...
# C言語は挫折した記憶しかありません(笑)
grep して見てみると SIG_register という wrap 関数で SIGABRT, SIGHUP, SIGINT, SIGQUIT,
SIGPIPE, SIGTERM
あたりを拾っているみたいですが、SIGSEGV は拾ってないですね。
cvsnt の source を grep してみたところ、
% grep -r SIGSEGV .
./plink/putty/unix/pty.c: putty_signal(SIGSEGV,
fatal_sig_handler);
拾ってなさそうですねぇ。
(plink は ssh とか telnet, rsh のクライアントになる為で、
きっと pserver には使われていないはず。)
1. inetd から起動されるクライアントは core を吐く?
core を吐くプログラムを inetd に登録。
telnet で繋ぐ ==> kernel: pid 69060 (a.out), uid 0: exited on signal 11 (core
dumped)
/ に core を吐きました。 core dumped と表示されてますねぇ...
#include <stdio.h>
main()
{
char *p;
p = (char *)65536; /* 落ちればいいので大きめの数字を適当に */
printf("%s\n",p);
}
2. setuid する プログラムは core を吐くのか?
==> kernel: pid 69141 (a.out), uid 1001: exited on signal 11
core は吐きませんでした。
ここで、core を吐くように OS を設定できればいいと思うのですが...
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
main()
{
char *p;
p = (char *)65536;
setuid((uid_t) 1001);
printf("%s\n",p);
}
何か、手はないでしょうか。
# 動いているプロセスに gdb から atach しても detach されますし...
On Wed, 25 Oct 2006 16:02:33 +0900,
Kouji Ito <[EMAIL PROTECTED]> wrote:
>> う〜ん。cvsnt が自分で core を吐かないようにしているのだろうか?
>
> あー、そうかも。
> signal 11 を自分で捕まえて、exit() してるとcore吐かないかも。
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+
関西沖縄の集い がじまるの会 手伝い 一人だけの勝手に神奈川支部
仲村 武 <[EMAIL PROTECTED]>