#include <sys/types.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <err.h>
int
main()
{
pid_t pid;
int serrno;
if ((pid = fork()) < 0)
err(1, "fork");
if (!pid) {
if (seteuid(1))
err(1, "seteuid");
sleep(3);
return 0;
}
sleep(1);
if (kill(pid, 0)) {
serrno = errno;
kill(pid, SIGKILL);
errno = serrno;
err(1, "kill0");
}
if (setreuid(1, 1)) {
serrno = errno;
kill(pid, SIGKILL);
errno = serrno;
err(1, "seteuid1");
}
if (!kill(pid, 0))
errx(1, "kill1");
return 0;
}