[6798] in bugtraq

home help back first fref pref prev next nref lref last post

Re: pingflood.c

daemon@ATHENA.MIT.EDU (pedward@WEBCOM.COM)
Mon May 18 15:03:07 1998

Date: 	Mon, 18 May 1998 10:23:32 -0700
Reply-To: pedward@WEBCOM.COM
From: pedward@WEBCOM.COM
X-To:         avarvit@cc.ece.ntua.gr
To: BUGTRAQ@NETSPACE.ORG
In-Reply-To:  <199805181039.NAA19336@cc.ece.ntua.gr> from "Aggelos P.
              Varvitsiotis" at May 18, 98 01:39:07 pm

The reason that this works is because many platforms implement sleep(2)
as:

alarm(seconds);
sigsuspend(...);


This is implementation is done in Solaris, etc.  I have implemented my
own sleep function because when using threads under Solaris, messing with
signals is a bad proposition.  So:

void mysleep(int seconds)
{
        struct timeval  tv;

        tv.tv_sec=seconds;
        tv.tv_usec=0;

        select(0,NULL,NULL,NULL,&tv);
}

The code above should be portable to every platform that supports the standard
select(2) semantics.  It allows for subsecond precision too.  This implementation
isn't subject to signal dainbrammage either.

--Perry

> Verified it on SunOS 5.5.1. Basically, it is so simple that it
> should work on any Unix box. The "bug" in ping's code is that
> the code naively assumes the SIGALRM is system-generated (due
> to a previous alarm() call). At least on SunOS 5.5.1, sigaction(2)
> can be used to examine the source of the SIGALRM (e.g. check
> that (siginfo_t *)si->si_code > 0 -- (siginfo_t *)si is returned
> to the signal handler if the sa_flags member of the struct sigaction
> passed to sigaction() has the SA_SIGINFO bit set). I am not sure
> how this can be implemented on other systems.
>
> BTW, how many setuid programs are there that will catch various
> signals and will behave "not-as-expected" when forked off by a
> signal-bomber parent process, such as pingflood?
>
> a.varvitsiotis@iccs.ntua.gr                     A.Varvitsiotis
>                                              ICCS Computer Center
>                                       National Technical University of Athens
>
>


--
Perry Harrington        System Software Engineer    zelur xuniL  ()
http://www.webcom.com  perry.harrington@webcom.com  Think Blue.  /\

home help back first fref pref prev next nref lref last post