Re: pingflood.c

From: pedwardat_private
Date: Mon May 18 1998 - 10:23:32 PDT

  • Next message: Theo de Raadt: "Re: pingflood.c"

    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.varvitsiotisat_private                     A.Varvitsiotis
    >                                              ICCS Computer Center
    >                                       National Technical University of Athens
    >
    >
    
    
    --
    Perry Harrington        System Software Engineer    zelur xuniL  ()
    http://www.webcom.com  perry.harringtonat_private  Think Blue.  /\
    



    This archive was generated by hypermail 2b30 : Fri Apr 13 2001 - 13:54:01 PDT