summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c/src/exec/posix/src/psignal.c21
-rw-r--r--cpukit/posix/src/psignal.c21
2 files changed, 28 insertions, 14 deletions
diff --git a/c/src/exec/posix/src/psignal.c b/c/src/exec/posix/src/psignal.c
index 66cca49c3c..863220e608 100644
--- a/c/src/exec/posix/src/psignal.c
+++ b/c/src/exec/posix/src/psignal.c
@@ -498,7 +498,7 @@ int sigemptyset(
)
{
if ( !set )
- set_errno_and_return_minus_one( EFAULT );
+ set_errno_and_return_minus_one( EINVAL );
*set = 0;
return 0;
@@ -513,7 +513,7 @@ int sigfillset(
)
{
if ( !set )
- set_errno_and_return_minus_one( EFAULT );
+ set_errno_and_return_minus_one( EINVAL );
*set = SIGNAL_ALL_MASK;
return 0;
@@ -529,7 +529,7 @@ int sigaddset(
)
{
if ( !set )
- set_errno_and_return_minus_one( EFAULT );
+ set_errno_and_return_minus_one( EINVAL );
if ( !signo )
return 0;
@@ -551,7 +551,7 @@ int sigdelset(
)
{
if ( !set )
- set_errno_and_return_minus_one( EFAULT );
+ set_errno_and_return_minus_one( EINVAL );
if ( !signo )
return 0;
@@ -573,7 +573,7 @@ int sigismember(
)
{
if ( !set )
- set_errno_and_return_minus_one( EFAULT );
+ set_errno_and_return_minus_one( EINVAL );
if ( !signo )
return 0;
@@ -687,7 +687,7 @@ int pthread_sigmask(
POSIX_API_Control *api;
if ( !set && !oset )
- set_errno_and_return_minus_one( EFAULT );
+ set_errno_and_return_minus_one( EINVAL );
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
@@ -735,7 +735,7 @@ int sigpending(
POSIX_API_Control *api;
if ( !set )
- set_errno_and_return_minus_one( EFAULT );
+ set_errno_and_return_minus_one( EINVAL );
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
@@ -947,6 +947,13 @@ int killinfo(
set_errno_and_return_minus_one( ESRCH );
/*
+ * Validate the signal passed if not 0.
+ */
+
+ if ( sig && !is_valid_signo(sig) )
+ set_errno_and_return_minus_one( EINVAL );
+
+ /*
* If the signal is being ignored, then we are out of here.
*/
diff --git a/cpukit/posix/src/psignal.c b/cpukit/posix/src/psignal.c
index 66cca49c3c..863220e608 100644
--- a/cpukit/posix/src/psignal.c
+++ b/cpukit/posix/src/psignal.c
@@ -498,7 +498,7 @@ int sigemptyset(
)
{
if ( !set )
- set_errno_and_return_minus_one( EFAULT );
+ set_errno_and_return_minus_one( EINVAL );
*set = 0;
return 0;
@@ -513,7 +513,7 @@ int sigfillset(
)
{
if ( !set )
- set_errno_and_return_minus_one( EFAULT );
+ set_errno_and_return_minus_one( EINVAL );
*set = SIGNAL_ALL_MASK;
return 0;
@@ -529,7 +529,7 @@ int sigaddset(
)
{
if ( !set )
- set_errno_and_return_minus_one( EFAULT );
+ set_errno_and_return_minus_one( EINVAL );
if ( !signo )
return 0;
@@ -551,7 +551,7 @@ int sigdelset(
)
{
if ( !set )
- set_errno_and_return_minus_one( EFAULT );
+ set_errno_and_return_minus_one( EINVAL );
if ( !signo )
return 0;
@@ -573,7 +573,7 @@ int sigismember(
)
{
if ( !set )
- set_errno_and_return_minus_one( EFAULT );
+ set_errno_and_return_minus_one( EINVAL );
if ( !signo )
return 0;
@@ -687,7 +687,7 @@ int pthread_sigmask(
POSIX_API_Control *api;
if ( !set && !oset )
- set_errno_and_return_minus_one( EFAULT );
+ set_errno_and_return_minus_one( EINVAL );
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
@@ -735,7 +735,7 @@ int sigpending(
POSIX_API_Control *api;
if ( !set )
- set_errno_and_return_minus_one( EFAULT );
+ set_errno_and_return_minus_one( EINVAL );
api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
@@ -947,6 +947,13 @@ int killinfo(
set_errno_and_return_minus_one( ESRCH );
/*
+ * Validate the signal passed if not 0.
+ */
+
+ if ( sig && !is_valid_signo(sig) )
+ set_errno_and_return_minus_one( EINVAL );
+
+ /*
* If the signal is being ignored, then we are out of here.
*/