Changeset 22728

Show
Ignore:
Timestamp:
10/25/07 18:01:16 (13 months ago)
Author:
bonefish
Message:

Patch by Vasilis Kaoutsis: Check for a valid signal number before
doing something. If the signal is not valid, set errno and return -1.
Mini style changes by myself.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • haiku/trunk/src/system/libroot/posix/signal/sigset.c

    r21999 r22728  
    88 
    99 
     10#include <errno.h> 
    1011#include <signal.h> 
    11  
    1212#include <syscalls.h> 
    1313 
     
    3232sigismember(const sigset_t *set, int sig) 
    3333{ 
    34         sigset_t mask = (((sigset_t) 1) << (( sig ) - 1)) ; 
     34        sigset_t mask; 
     35 
     36        if (sig <= 0 || sig >= NSIG) { 
     37                        errno = EINVAL; 
     38                        return -1; 
     39        } 
     40 
     41        mask = (((sigset_t)1) << (sig - 1)) ; 
    3542        return (*set & mask) ? 1 : 0 ; 
    3643} 
     
    4047sigaddset(sigset_t *set, int sig) 
    4148{ 
    42         sigset_t mask = (((sigset_t) 1) << (( sig ) - 1)) ; 
     49        sigset_t mask; 
     50 
     51        if (sig <= 0 || sig >= NSIG) { 
     52                        errno = EINVAL; 
     53                        return -1; 
     54        } 
     55 
     56        mask = (((sigset_t)1) << (sig - 1)) ; 
    4357        *set |= mask; 
    4458        return 0; 
     
    4963sigdelset(sigset_t *set, int sig) 
    5064{ 
    51         sigset_t mask = (((sigset_t) 1) << (( sig ) - 1)) ; 
     65        sigset_t mask; 
     66 
     67        if (sig <= 0 || sig >= NSIG) { 
     68                        errno = EINVAL; 
     69                        return -1; 
     70        } 
     71 
     72        mask = (((sigset_t)1) << (sig - 1)) ; 
    5273        *set &= ~mask; 
    5374        return 0; 
    5475} 
    55