summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2004-05-06 19:21:40 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2004-05-06 19:21:40 +0000
commite980b219790cb601caed749f32a43f92e3ebde26 (patch)
treeed59ef2515a9fc0e316b76bed53fbdcd3df0c2dc
parent2004-04-30 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-e980b219790cb601caed749f32a43f92e3ebde26.tar.bz2
2004-05-06 Joel Sherrill <joel@OARcorp.com>
PR 618/rtems * rtems/include/rtems/rtems/status.h, rtems/src/clockget.c, rtems/src/clockset.c, rtems/src/dpmemcreate.c, rtems/src/dpmemexternal2internal.c, rtems/src/dpmeminternal2external.c, rtems/src/eventmp.c, rtems/src/eventreceive.c, rtems/src/eventsend.c, rtems/src/msgqbroadcast.c, rtems/src/msgqcreate.c, rtems/src/msgqflush.c, rtems/src/msgqgetnumberpending.c, rtems/src/msgqreceive.c, rtems/src/msgqsubmit.c, rtems/src/partcreate.c, rtems/src/partdelete.c, rtems/src/partgetbuffer.c, rtems/src/ratemoncancel.c, rtems/src/ratemoncreate.c, rtems/src/ratemondelete.c, rtems/src/ratemongetstatus.c, rtems/src/ratemonident.c, rtems/src/ratemonperiod.c, rtems/src/regioncreate.c, rtems/src/regiondelete.c, rtems/src/regionextend.c, rtems/src/regiongetsegment.c, rtems/src/regiongetsegmentsize.c, rtems/src/regionreturnsegment.c, rtems/src/semcreate.c, rtems/src/semdelete.c, rtems/src/semflush.c, rtems/src/semident.c, rtems/src/taskcreate.c, rtems/src/taskgetnote.c, rtems/src/taskmode.c, rtems/src/taskrestart.c, rtems/src/taskresume.c, rtems/src/tasksetnote.c, rtems/src/tasksuspend.c, rtems/src/taskvariableadd.c, rtems/src/taskvariabledelete.c, rtems/src/taskvariableget.c, rtems/src/taskwakewhen.c, rtems/src/timercreate.c, rtems/src/timerdelete.c, rtems/src/timerfireafter.c, rtems/src/timerfirewhen.c, rtems/src/timerserverfireafter.c, rtems/src/timerserverfirewhen.c, score/include/rtems/score/object.h, score/src/coretodvalidate.c, score/src/objectnametoid.c: Add NULL checks.
-rw-r--r--cpukit/ChangeLog32
-rw-r--r--cpukit/rtems/include/rtems/rtems/status.h3
-rw-r--r--cpukit/rtems/src/clockget.c3
-rw-r--r--cpukit/rtems/src/clockset.c3
-rw-r--r--cpukit/rtems/src/clocktodvalidate.c3
-rw-r--r--cpukit/rtems/src/dpmemcreate.c3
-rw-r--r--cpukit/rtems/src/dpmemexternal2internal.c3
-rw-r--r--cpukit/rtems/src/dpmeminternal2external.c3
-rw-r--r--cpukit/rtems/src/eventmp.c2
-rw-r--r--cpukit/rtems/src/eventreceive.c3
-rw-r--r--cpukit/rtems/src/eventsend.c4
-rw-r--r--cpukit/rtems/src/msgqbroadcast.c6
-rw-r--r--cpukit/rtems/src/msgqcreate.c3
-rw-r--r--cpukit/rtems/src/msgqflush.c3
-rw-r--r--cpukit/rtems/src/msgqgetnumberpending.c3
-rw-r--r--cpukit/rtems/src/msgqreceive.c6
-rw-r--r--cpukit/rtems/src/msgqsubmit.c3
-rw-r--r--cpukit/rtems/src/partcreate.c12
-rw-r--r--cpukit/rtems/src/partdelete.c4
-rw-r--r--cpukit/rtems/src/partgetbuffer.c3
-rw-r--r--cpukit/rtems/src/ratemoncancel.c4
-rw-r--r--cpukit/rtems/src/ratemoncreate.c7
-rw-r--r--cpukit/rtems/src/ratemondelete.c4
-rw-r--r--cpukit/rtems/src/ratemongetstatus.c2
-rw-r--r--cpukit/rtems/src/ratemonident.c4
-rw-r--r--cpukit/rtems/src/ratemonperiod.c2
-rw-r--r--cpukit/rtems/src/regioncreate.c12
-rw-r--r--cpukit/rtems/src/regiondelete.c4
-rw-r--r--cpukit/rtems/src/regionextend.c3
-rw-r--r--cpukit/rtems/src/regiongetsegment.c3
-rw-r--r--cpukit/rtems/src/regiongetsegmentsize.c6
-rw-r--r--cpukit/rtems/src/regionreturnsegment.c2
-rw-r--r--cpukit/rtems/src/semcreate.c3
-rw-r--r--cpukit/rtems/src/semdelete.c2
-rw-r--r--cpukit/rtems/src/semflush.c2
-rw-r--r--cpukit/rtems/src/semident.c4
-rw-r--r--cpukit/rtems/src/taskcreate.c3
-rw-r--r--cpukit/rtems/src/taskgetnote.c7
-rw-r--r--cpukit/rtems/src/taskmode.c3
-rw-r--r--cpukit/rtems/src/taskrestart.c2
-rw-r--r--cpukit/rtems/src/taskresume.c2
-rw-r--r--cpukit/rtems/src/tasksetnote.c2
-rw-r--r--cpukit/rtems/src/tasksuspend.c2
-rw-r--r--cpukit/rtems/src/taskvariableadd.c3
-rw-r--r--cpukit/rtems/src/taskvariabledelete.c3
-rw-r--r--cpukit/rtems/src/taskvariableget.c6
-rw-r--r--cpukit/rtems/src/taskwakewhen.c7
-rw-r--r--cpukit/rtems/src/timercreate.c3
-rw-r--r--cpukit/rtems/src/timerdelete.c4
-rw-r--r--cpukit/rtems/src/timerfireafter.c3
-rw-r--r--cpukit/rtems/src/timerfirewhen.c3
-rw-r--r--cpukit/rtems/src/timerserverfireafter.c3
-rw-r--r--cpukit/rtems/src/timerserverfirewhen.c3
-rw-r--r--cpukit/score/include/rtems/score/object.h1
-rw-r--r--cpukit/score/src/coretodvalidate.c3
-rw-r--r--cpukit/score/src/objectnametoid.c3
56 files changed, 194 insertions, 41 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog
index a56213bb1b..66b03c5a99 100644
--- a/cpukit/ChangeLog
+++ b/cpukit/ChangeLog
@@ -1,3 +1,35 @@
+2004-05-06 Joel Sherrill <joel@OARcorp.com>
+
+ PR 618/rtems
+ * rtems/include/rtems/rtems/status.h, rtems/src/clockget.c,
+ rtems/src/clockset.c, rtems/src/dpmemcreate.c,
+ rtems/src/dpmemexternal2internal.c,
+ rtems/src/dpmeminternal2external.c, rtems/src/eventmp.c,
+ rtems/src/eventreceive.c, rtems/src/eventsend.c,
+ rtems/src/msgqbroadcast.c, rtems/src/msgqcreate.c,
+ rtems/src/msgqflush.c, rtems/src/msgqgetnumberpending.c,
+ rtems/src/msgqreceive.c, rtems/src/msgqsubmit.c,
+ rtems/src/partcreate.c, rtems/src/partdelete.c,
+ rtems/src/partgetbuffer.c, rtems/src/ratemoncancel.c,
+ rtems/src/ratemoncreate.c, rtems/src/ratemondelete.c,
+ rtems/src/ratemongetstatus.c, rtems/src/ratemonident.c,
+ rtems/src/ratemonperiod.c, rtems/src/regioncreate.c,
+ rtems/src/regiondelete.c, rtems/src/regionextend.c,
+ rtems/src/regiongetsegment.c, rtems/src/regiongetsegmentsize.c,
+ rtems/src/regionreturnsegment.c, rtems/src/semcreate.c,
+ rtems/src/semdelete.c, rtems/src/semflush.c, rtems/src/semident.c,
+ rtems/src/taskcreate.c, rtems/src/taskgetnote.c,
+ rtems/src/taskmode.c, rtems/src/taskrestart.c,
+ rtems/src/taskresume.c, rtems/src/tasksetnote.c,
+ rtems/src/tasksuspend.c, rtems/src/taskvariableadd.c,
+ rtems/src/taskvariabledelete.c, rtems/src/taskvariableget.c,
+ rtems/src/taskwakewhen.c, rtems/src/timercreate.c,
+ rtems/src/timerdelete.c, rtems/src/timerfireafter.c,
+ rtems/src/timerfirewhen.c, rtems/src/timerserverfireafter.c,
+ rtems/src/timerserverfirewhen.c, score/include/rtems/score/object.h,
+ score/src/coretodvalidate.c, score/src/objectnametoid.c: Add NULL
+ checks.
+
2004-04-30 Joel Sherrill <joel@OARcorp.com>
* libnetworking/kern/kern_sysctl.c: sysctl_register_all cannot be
diff --git a/cpukit/rtems/include/rtems/rtems/status.h b/cpukit/rtems/include/rtems/rtems/status.h
index 3ec50977fe..3510a8ca36 100644
--- a/cpukit/rtems/include/rtems/rtems/status.h
+++ b/cpukit/rtems/include/rtems/rtems/status.h
@@ -63,8 +63,9 @@ extern rtems_status_code _Status_Object_name_errors_to_status[];
#ifdef RTEMS_API_INIT
rtems_status_code _Status_Object_name_errors_to_status[] = {
- RTEMS_SUCCESSFUL, /* OBJECTS_ID_NAME_OR_ID_LOOKUP_SUCCESSFUL */
+ RTEMS_SUCCESSFUL, /* OBJECTS_SUCCESSFUL */
RTEMS_INVALID_NAME, /* OBJECTS_INVALID_NAME */
+ RTEMS_INVALID_ADDRESS, /* OBJECTS_INVALID_ADDRESS */
RTEMS_INVALID_ID, /* OBJECTS_INVALID_ID */
RTEMS_INVALID_NODE /* OBJECTS_INVALID_NODE */
};
diff --git a/cpukit/rtems/src/clockget.c b/cpukit/rtems/src/clockget.c
index 45105bc0f2..3ae9cab1a0 100644
--- a/cpukit/rtems/src/clockget.c
+++ b/cpukit/rtems/src/clockget.c
@@ -45,6 +45,9 @@ rtems_status_code rtems_clock_get(
ISR_Level level;
rtems_interval tmp;
+ if ( !time_buffer )
+ return RTEMS_INVALID_ADDRESS;
+
switch ( option ) {
case RTEMS_CLOCK_GET_TOD:
if ( !_TOD_Is_set )
diff --git a/cpukit/rtems/src/clockset.c b/cpukit/rtems/src/clockset.c
index 59677fd3e1..5de5dc0edb 100644
--- a/cpukit/rtems/src/clockset.c
+++ b/cpukit/rtems/src/clockset.c
@@ -39,6 +39,9 @@ rtems_status_code rtems_clock_set(
{
rtems_interval seconds;
+ if ( !time_buffer )
+ return RTEMS_INVALID_ADDRESS;
+
if ( _TOD_Validate( time_buffer ) ) {
seconds = _TOD_To_seconds( time_buffer );
_Thread_Disable_dispatch();
diff --git a/cpukit/rtems/src/clocktodvalidate.c b/cpukit/rtems/src/clocktodvalidate.c
index 49f668ed67..1a92f81c57 100644
--- a/cpukit/rtems/src/clocktodvalidate.c
+++ b/cpukit/rtems/src/clocktodvalidate.c
@@ -40,7 +40,8 @@ boolean _TOD_Validate(
{
uint32_t days_in_month;
- if ((the_tod->ticks >= _TOD_Ticks_per_second) ||
+ if ((!the_tod) ||
+ (the_tod->ticks >= _TOD_Ticks_per_second) ||
(the_tod->second >= TOD_SECONDS_PER_MINUTE) ||
(the_tod->minute >= TOD_MINUTES_PER_HOUR) ||
(the_tod->hour >= TOD_HOURS_PER_DAY) ||
diff --git a/cpukit/rtems/src/dpmemcreate.c b/cpukit/rtems/src/dpmemcreate.c
index 30c8233aa3..7c6e3604b0 100644
--- a/cpukit/rtems/src/dpmemcreate.c
+++ b/cpukit/rtems/src/dpmemcreate.c
@@ -52,6 +52,9 @@ rtems_status_code rtems_port_create(
if ( !rtems_is_name_valid( name) )
return RTEMS_INVALID_NAME;
+ if ( !id )
+ return RTEMS_INVALID_ADDRESS;
+
if ( !_Addresses_Is_aligned( internal_start ) ||
!_Addresses_Is_aligned( external_start ) )
return RTEMS_INVALID_ADDRESS;
diff --git a/cpukit/rtems/src/dpmemexternal2internal.c b/cpukit/rtems/src/dpmemexternal2internal.c
index 7804efdc6c..d496404a50 100644
--- a/cpukit/rtems/src/dpmemexternal2internal.c
+++ b/cpukit/rtems/src/dpmemexternal2internal.c
@@ -49,6 +49,9 @@ rtems_status_code rtems_port_external_to_internal(
Objects_Locations location;
uint32_t ending;
+ if ( !internal )
+ return RTEMS_INVALID_ADDRESS;
+
the_port = _Dual_ported_memory_Get( id, &location );
switch ( location ) {
case OBJECTS_REMOTE: /* this error cannot be returned */
diff --git a/cpukit/rtems/src/dpmeminternal2external.c b/cpukit/rtems/src/dpmeminternal2external.c
index 863b9dfa00..defe8375f6 100644
--- a/cpukit/rtems/src/dpmeminternal2external.c
+++ b/cpukit/rtems/src/dpmeminternal2external.c
@@ -49,6 +49,9 @@ rtems_status_code rtems_port_internal_to_external(
Objects_Locations location;
uint32_t ending;
+ if ( !external )
+ return RTEMS_INVALID_ADDRESS;
+
the_port = _Dual_ported_memory_Get( id, &location );
switch ( location ) {
case OBJECTS_REMOTE: /* this error cannot be returned */
diff --git a/cpukit/rtems/src/eventmp.c b/cpukit/rtems/src/eventmp.c
index 33fa0e6d97..cf611c5d5b 100644
--- a/cpukit/rtems/src/eventmp.c
+++ b/cpukit/rtems/src/eventmp.c
@@ -40,7 +40,7 @@
rtems_status_code _Event_MP_Send_request_packet (
Event_MP_Remote_operations operation,
Objects_Id event_id,
- rtems_event_set event_in
+ rtems_event_set event_in
)
{
Event_MP_Packet *the_packet;
diff --git a/cpukit/rtems/src/eventreceive.c b/cpukit/rtems/src/eventreceive.c
index 05a58eb469..646f0b9bca 100644
--- a/cpukit/rtems/src/eventreceive.c
+++ b/cpukit/rtems/src/eventreceive.c
@@ -48,6 +48,9 @@ rtems_status_code rtems_event_receive(
{
RTEMS_API_Control *api;
+ if ( !event_out )
+ return RTEMS_INVALID_ADDRESS;
+
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
if ( _Event_sets_Is_empty( event_in ) ) {
diff --git a/cpukit/rtems/src/eventsend.c b/cpukit/rtems/src/eventsend.c
index 1151ebfa29..8294fb3117 100644
--- a/cpukit/rtems/src/eventsend.c
+++ b/cpukit/rtems/src/eventsend.c
@@ -37,8 +37,8 @@
*/
rtems_status_code rtems_event_send(
- Objects_Id id,
- rtems_event_set event_in
+ Objects_Id id,
+ rtems_event_set event_in
)
{
register Thread_Control *the_thread;
diff --git a/cpukit/rtems/src/msgqbroadcast.c b/cpukit/rtems/src/msgqbroadcast.c
index 8eb4bef5ea..f81523fa37 100644
--- a/cpukit/rtems/src/msgqbroadcast.c
+++ b/cpukit/rtems/src/msgqbroadcast.c
@@ -60,6 +60,12 @@ rtems_status_code rtems_message_queue_broadcast(
Objects_Locations location;
CORE_message_queue_Status core_status;
+ if ( !buffer )
+ return RTEMS_INVALID_ADDRESS;
+
+ if ( !count )
+ return RTEMS_INVALID_ADDRESS;
+
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
case OBJECTS_REMOTE:
diff --git a/cpukit/rtems/src/msgqcreate.c b/cpukit/rtems/src/msgqcreate.c
index 4b4aa02554..a230afbf8b 100644
--- a/cpukit/rtems/src/msgqcreate.c
+++ b/cpukit/rtems/src/msgqcreate.c
@@ -67,6 +67,9 @@ rtems_status_code rtems_message_queue_create(
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
+ if ( !id )
+ return RTEMS_INVALID_ADDRESS;
+
#if defined(RTEMS_MULTIPROCESSING)
if ( (is_global = _Attributes_Is_global( attribute_set ) ) &&
!_System_state_Is_multiprocessing )
diff --git a/cpukit/rtems/src/msgqflush.c b/cpukit/rtems/src/msgqflush.c
index c857c5f507..7eb47d9785 100644
--- a/cpukit/rtems/src/msgqflush.c
+++ b/cpukit/rtems/src/msgqflush.c
@@ -56,6 +56,9 @@ rtems_status_code rtems_message_queue_flush(
register Message_queue_Control *the_message_queue;
Objects_Locations location;
+ if ( !count )
+ return RTEMS_INVALID_ADDRESS;
+
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
case OBJECTS_REMOTE:
diff --git a/cpukit/rtems/src/msgqgetnumberpending.c b/cpukit/rtems/src/msgqgetnumberpending.c
index 26be670401..a386127ecb 100644
--- a/cpukit/rtems/src/msgqgetnumberpending.c
+++ b/cpukit/rtems/src/msgqgetnumberpending.c
@@ -54,6 +54,9 @@ rtems_status_code rtems_message_queue_get_number_pending(
register Message_queue_Control *the_message_queue;
Objects_Locations location;
+ if ( !count )
+ return RTEMS_INVALID_ADDRESS;
+
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
case OBJECTS_REMOTE:
diff --git a/cpukit/rtems/src/msgqreceive.c b/cpukit/rtems/src/msgqreceive.c
index 0724127f4a..19d82ae10e 100644
--- a/cpukit/rtems/src/msgqreceive.c
+++ b/cpukit/rtems/src/msgqreceive.c
@@ -61,6 +61,12 @@ rtems_status_code rtems_message_queue_receive(
Objects_Locations location;
boolean wait;
+ if ( !buffer )
+ return RTEMS_INVALID_ADDRESS;
+
+ if ( !size )
+ return RTEMS_INVALID_ADDRESS;
+
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
diff --git a/cpukit/rtems/src/msgqsubmit.c b/cpukit/rtems/src/msgqsubmit.c
index fda406d18e..52d18261dc 100644
--- a/cpukit/rtems/src/msgqsubmit.c
+++ b/cpukit/rtems/src/msgqsubmit.c
@@ -69,6 +69,9 @@ rtems_status_code _Message_queue_Submit(
Objects_Locations location;
CORE_message_queue_Status msg_status;
+ if ( !buffer )
+ return RTEMS_INVALID_ADDRESS;
+
the_message_queue = _Message_queue_Get( id, &location );
switch ( location )
{
diff --git a/cpukit/rtems/src/partcreate.c b/cpukit/rtems/src/partcreate.c
index aea18f68ad..d6baa166e7 100644
--- a/cpukit/rtems/src/partcreate.c
+++ b/cpukit/rtems/src/partcreate.c
@@ -37,9 +37,9 @@
* id - pointer to partition id
*
* Output parameters:
- * id - partition id
+ * id - partition id
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
rtems_status_code rtems_partition_create(
@@ -47,7 +47,7 @@ rtems_status_code rtems_partition_create(
void *starting_address,
uint32_t length,
uint32_t buffer_size,
- rtems_attribute attribute_set,
+ rtems_attribute attribute_set,
Objects_Id *id
)
{
@@ -56,6 +56,12 @@ rtems_status_code rtems_partition_create(
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
+ if ( !starting_address )
+ return RTEMS_INVALID_ADDRESS;
+
+ if ( !id )
+ return RTEMS_INVALID_ADDRESS;
+
if ( length == 0 || buffer_size == 0 || length < buffer_size ||
!_Partition_Is_buffer_size_aligned( buffer_size ) )
return RTEMS_INVALID_SIZE;
diff --git a/cpukit/rtems/src/partdelete.c b/cpukit/rtems/src/partdelete.c
index 8502f3c8d3..16b3b4cdd7 100644
--- a/cpukit/rtems/src/partdelete.c
+++ b/cpukit/rtems/src/partdelete.c
@@ -34,7 +34,7 @@
*
* Output parameters:
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
rtems_status_code rtems_partition_delete(
@@ -42,7 +42,7 @@ rtems_status_code rtems_partition_delete(
)
{
register Partition_Control *the_partition;
- Objects_Locations location;
+ Objects_Locations location;
the_partition = _Partition_Get( id, &location );
switch ( location ) {
diff --git a/cpukit/rtems/src/partgetbuffer.c b/cpukit/rtems/src/partgetbuffer.c
index 36910eb7d6..6870d66ca7 100644
--- a/cpukit/rtems/src/partgetbuffer.c
+++ b/cpukit/rtems/src/partgetbuffer.c
@@ -46,6 +46,9 @@ rtems_status_code rtems_partition_get_buffer(
Objects_Locations location;
void *the_buffer;
+ if ( !buffer )
+ return RTEMS_INVALID_ADDRESS;
+
the_partition = _Partition_Get( id, &location );
switch ( location ) {
case OBJECTS_REMOTE:
diff --git a/cpukit/rtems/src/ratemoncancel.c b/cpukit/rtems/src/ratemoncancel.c
index 0006843265..645ec510f2 100644
--- a/cpukit/rtems/src/ratemoncancel.c
+++ b/cpukit/rtems/src/ratemoncancel.c
@@ -31,7 +31,7 @@
*
* Output parameters:
* RTEMS_SUCCESSFUL - if successful and caller is not the owning thread
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
rtems_status_code rtems_rate_monotonic_cancel(
@@ -39,7 +39,7 @@ rtems_status_code rtems_rate_monotonic_cancel(
)
{
Rate_monotonic_Control *the_period;
- Objects_Locations location;
+ Objects_Locations location;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
diff --git a/cpukit/rtems/src/ratemoncreate.c b/cpukit/rtems/src/ratemoncreate.c
index d0144a610b..27d397e9ca 100644
--- a/cpukit/rtems/src/ratemoncreate.c
+++ b/cpukit/rtems/src/ratemoncreate.c
@@ -32,9 +32,9 @@
* id - pointer to rate monotonic id
*
* Output parameters:
- * id - rate monotonic id
+ * id - rate monotonic id
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
rtems_status_code rtems_rate_monotonic_create(
@@ -47,6 +47,9 @@ rtems_status_code rtems_rate_monotonic_create(
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
+ if ( !id )
+ return RTEMS_INVALID_ADDRESS;
+
_Thread_Disable_dispatch(); /* to prevent deletion */
the_period = _Rate_monotonic_Allocate();
diff --git a/cpukit/rtems/src/ratemondelete.c b/cpukit/rtems/src/ratemondelete.c
index 77eb1d7c04..c465c0dc51 100644
--- a/cpukit/rtems/src/ratemondelete.c
+++ b/cpukit/rtems/src/ratemondelete.c
@@ -31,7 +31,7 @@
*
* Output parameters:
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
rtems_status_code rtems_rate_monotonic_delete(
@@ -39,7 +39,7 @@ rtems_status_code rtems_rate_monotonic_delete(
)
{
Rate_monotonic_Control *the_period;
- Objects_Locations location;
+ Objects_Locations location;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
diff --git a/cpukit/rtems/src/ratemongetstatus.c b/cpukit/rtems/src/ratemongetstatus.c
index 93fb05c68a..2ae8732c4d 100644
--- a/cpukit/rtems/src/ratemongetstatus.c
+++ b/cpukit/rtems/src/ratemongetstatus.c
@@ -45,7 +45,7 @@ rtems_status_code rtems_rate_monotonic_get_status(
Objects_Locations location;
Rate_monotonic_Control *the_period;
- if ( status == NULL )
+ if ( !status )
return RTEMS_INVALID_ADDRESS;
the_period = _Rate_monotonic_Get( id, &location );
diff --git a/cpukit/rtems/src/ratemonident.c b/cpukit/rtems/src/ratemonident.c
index b48e6a331e..442bfbf685 100644
--- a/cpukit/rtems/src/ratemonident.c
+++ b/cpukit/rtems/src/ratemonident.c
@@ -32,9 +32,9 @@
* id - pointer to period id
*
* Output parameters:
- * *id - region id
+ * *id - region id
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
rtems_status_code rtems_rate_monotonic_ident(
diff --git a/cpukit/rtems/src/ratemonperiod.c b/cpukit/rtems/src/ratemonperiod.c
index ca42e643f5..1e5c8fb7f6 100644
--- a/cpukit/rtems/src/ratemonperiod.c
+++ b/cpukit/rtems/src/ratemonperiod.c
@@ -32,7 +32,7 @@
*
* Output parameters:
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
rtems_status_code rtems_rate_monotonic_period(
diff --git a/cpukit/rtems/src/regioncreate.c b/cpukit/rtems/src/regioncreate.c
index 5481505276..3aeb78ef0e 100644
--- a/cpukit/rtems/src/regioncreate.c
+++ b/cpukit/rtems/src/regioncreate.c
@@ -38,9 +38,9 @@
* id - address of region id to set
*
* Output parameters:
- * id - region id
+ * id - region id
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
rtems_status_code rtems_region_create(
@@ -48,7 +48,7 @@ rtems_status_code rtems_region_create(
void *starting_address,
uint32_t length,
uint32_t page_size,
- rtems_attribute attribute_set,
+ rtems_attribute attribute_set,
Objects_Id *id
)
{
@@ -57,6 +57,12 @@ rtems_status_code rtems_region_create(
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
+ if ( !starting_address )
+ return RTEMS_INVALID_ADDRESS;
+
+ if ( !id )
+ return RTEMS_INVALID_ADDRESS;
+
if ( !_Addresses_Is_aligned( starting_address ) )
return RTEMS_INVALID_ADDRESS;
diff --git a/cpukit/rtems/src/regiondelete.c b/cpukit/rtems/src/regiondelete.c
index d857baae0e..7a41ee4e87 100644
--- a/cpukit/rtems/src/regiondelete.c
+++ b/cpukit/rtems/src/regiondelete.c
@@ -35,7 +35,7 @@
*
* Output parameters:
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
rtems_status_code rtems_region_delete(
@@ -43,7 +43,7 @@ rtems_status_code rtems_region_delete(
)
{
register Region_Control *the_region;
- Objects_Locations location;
+ Objects_Locations location;
_RTEMS_Lock_allocator();
the_region = _Region_Get( id, &location );
diff --git a/cpukit/rtems/src/regionextend.c b/cpukit/rtems/src/regionextend.c
index 9e5436de8d..956ef96513 100644
--- a/cpukit/rtems/src/regionextend.c
+++ b/cpukit/rtems/src/regionextend.c
@@ -51,6 +51,9 @@ rtems_status_code rtems_region_extend(
Heap_Extend_status heap_status;
rtems_status_code status;
+ if ( !starting_address )
+ return RTEMS_INVALID_ADDRESS;
+
status = RTEMS_SUCCESSFUL;
_RTEMS_Lock_allocator(); /* to prevent deletion */
diff --git a/cpukit/rtems/src/regiongetsegment.c b/cpukit/rtems/src/regiongetsegment.c
index fc0e2752fd..27d6bf66dd 100644
--- a/cpukit/rtems/src/regiongetsegment.c
+++ b/cpukit/rtems/src/regiongetsegment.c
@@ -54,6 +54,9 @@ rtems_status_code rtems_region_get_segment(
Thread_Control *executing;
void *the_segment;
+ if ( !segment )
+ return RTEMS_INVALID_ADDRESS;
+
*segment = NULL;
if ( size == 0 )
diff --git a/cpukit/rtems/src/regiongetsegmentsize.c b/cpukit/rtems/src/regiongetsegmentsize.c
index d9ae54e2ac..90facf952c 100644
--- a/cpukit/rtems/src/regiongetsegmentsize.c
+++ b/cpukit/rtems/src/regiongetsegmentsize.c
@@ -49,6 +49,12 @@ rtems_status_code rtems_region_get_segment_size(
Objects_Locations location;
Thread_Control *executing;
+ if ( !segment )
+ return RTEMS_INVALID_ADDRESS;
+
+ if ( !size )
+ return RTEMS_INVALID_ADDRESS;
+
_RTEMS_Lock_allocator();
executing = _Thread_Executing;
the_region = _Region_Get( id, &location );
diff --git a/cpukit/rtems/src/regionreturnsegment.c b/cpukit/rtems/src/regionreturnsegment.c
index 15d394275f..74517c0812 100644
--- a/cpukit/rtems/src/regionreturnsegment.c
+++ b/cpukit/rtems/src/regionreturnsegment.c
@@ -42,7 +42,7 @@
*
* Output parameters:
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
rtems_status_code rtems_region_return_segment(
diff --git a/cpukit/rtems/src/semcreate.c b/cpukit/rtems/src/semcreate.c
index 76967768ae..fc952e9032 100644
--- a/cpukit/rtems/src/semcreate.c
+++ b/cpukit/rtems/src/semcreate.c
@@ -81,6 +81,9 @@ rtems_status_code rtems_semaphore_create(
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
+ if ( !id )
+ return RTEMS_INVALID_ADDRESS;
+
#if defined(RTEMS_MULTIPROCESSING)
if ( _Attributes_Is_global( attribute_set ) ) {
diff --git a/cpukit/rtems/src/semdelete.c b/cpukit/rtems/src/semdelete.c
index fd0c21d896..a4fb7b7d50 100644
--- a/cpukit/rtems/src/semdelete.c
+++ b/cpukit/rtems/src/semdelete.c
@@ -58,7 +58,7 @@
*
* Output parameters:
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
#if defined(RTEMS_MULTIPROCESSING)
diff --git a/cpukit/rtems/src/semflush.c b/cpukit/rtems/src/semflush.c
index c44ebda383..cd244a1cf1 100644
--- a/cpukit/rtems/src/semflush.c
+++ b/cpukit/rtems/src/semflush.c
@@ -48,7 +48,7 @@
*
* Output parameters:
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
#if defined(RTEMS_MULTIPROCESSING)
diff --git a/cpukit/rtems/src/semident.c b/cpukit/rtems/src/semident.c
index b6031c4e74..9add0f0458 100644
--- a/cpukit/rtems/src/semident.c
+++ b/cpukit/rtems/src/semident.c
@@ -58,9 +58,9 @@
* id - pointer to semaphore id
*
* Output parameters:
- * *id - semaphore id
+ * *id - semaphore id
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
rtems_status_code rtems_semaphore_ident(
diff --git a/cpukit/rtems/src/taskcreate.c b/cpukit/rtems/src/taskcreate.c
index cac5b2d96a..7776af013e 100644
--- a/cpukit/rtems/src/taskcreate.c
+++ b/cpukit/rtems/src/taskcreate.c
@@ -72,6 +72,9 @@ rtems_status_code rtems_task_create(
ASR_Information *asr;
+ if ( !id )
+ return RTEMS_INVALID_ADDRESS;
+
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
diff --git a/cpukit/rtems/src/taskgetnote.c b/cpukit/rtems/src/taskgetnote.c
index 3626218516..94b452ad70 100644
--- a/cpukit/rtems/src/taskgetnote.c
+++ b/cpukit/rtems/src/taskgetnote.c
@@ -41,9 +41,9 @@
* note - pointer to note
*
* Output parameters:
- * note - filled in if successful
+ * note - filled in if successful
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
rtems_status_code rtems_task_get_note(
@@ -56,6 +56,9 @@ rtems_status_code rtems_task_get_note(
Objects_Locations location;
RTEMS_API_Control *api;
+ if ( !note )
+ return RTEMS_INVALID_ADDRESS;
+
/*
* NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would
* be checking an unsigned number for being negative.
diff --git a/cpukit/rtems/src/taskmode.c b/cpukit/rtems/src/taskmode.c
index e97d7e0a8c..478773681e 100644
--- a/cpukit/rtems/src/taskmode.c
+++ b/cpukit/rtems/src/taskmode.c
@@ -58,6 +58,9 @@ rtems_status_code rtems_task_mode(
boolean needs_asr_dispatching = FALSE;
rtems_mode old_mode;
+ if ( !previous_mode_set )
+ return RTEMS_INVALID_ADDRESS;
+
executing = _Thread_Executing;
api = executing->API_Extensions[ THREAD_API_RTEMS ];
asr = &api->Signal;
diff --git a/cpukit/rtems/src/taskrestart.c b/cpukit/rtems/src/taskrestart.c
index ca44f8dd25..932dc976af 100644
--- a/cpukit/rtems/src/taskrestart.c
+++ b/cpukit/rtems/src/taskrestart.c
@@ -43,7 +43,7 @@
*
* Output parameters:
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
rtems_status_code rtems_task_restart(
diff --git a/cpukit/rtems/src/taskresume.c b/cpukit/rtems/src/taskresume.c
index 46eaf9ea74..440dbaac66 100644
--- a/cpukit/rtems/src/taskresume.c
+++ b/cpukit/rtems/src/taskresume.c
@@ -40,7 +40,7 @@
*
* Output parameters:
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
rtems_status_code rtems_task_resume(
diff --git a/cpukit/rtems/src/tasksetnote.c b/cpukit/rtems/src/tasksetnote.c
index d2458a1baf..6372cbc0dc 100644
--- a/cpukit/rtems/src/tasksetnote.c
+++ b/cpukit/rtems/src/tasksetnote.c
@@ -42,7 +42,7 @@
*
* Output parameters:
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
rtems_status_code rtems_task_set_note(
diff --git a/cpukit/rtems/src/tasksuspend.c b/cpukit/rtems/src/tasksuspend.c
index b62e537e0d..7f40dd793e 100644
--- a/cpukit/rtems/src/tasksuspend.c
+++ b/cpukit/rtems/src/tasksuspend.c
@@ -49,7 +49,7 @@ rtems_status_code rtems_task_suspend(
)
{
register Thread_Control *the_thread;
- Objects_Locations location;
+ Objects_Locations location;
the_thread = _Thread_Get( id, &location );
switch ( location ) {
diff --git a/cpukit/rtems/src/taskvariableadd.c b/cpukit/rtems/src/taskvariableadd.c
index 46b7186cff..6e71180a66 100644
--- a/cpukit/rtems/src/taskvariableadd.c
+++ b/cpukit/rtems/src/taskvariableadd.c
@@ -32,6 +32,9 @@ rtems_status_code rtems_task_variable_add(
Objects_Locations location;
rtems_task_variable_t *tvp, *new;
+ if ( !ptr )
+ return RTEMS_INVALID_ADDRESS;
+
the_thread = _Thread_Get (tid, &location);
switch (location) {
case OBJECTS_REMOTE:
diff --git a/cpukit/rtems/src/taskvariabledelete.c b/cpukit/rtems/src/taskvariabledelete.c
index 6089306ae4..5dd01497a8 100644
--- a/cpukit/rtems/src/taskvariabledelete.c
+++ b/cpukit/rtems/src/taskvariabledelete.c
@@ -31,6 +31,9 @@ rtems_status_code rtems_task_variable_delete(
Objects_Locations location;
rtems_task_variable_t *tvp, *prev;
+ if ( !ptr )
+ return RTEMS_INVALID_ADDRESS;
+
prev = NULL;
the_thread = _Thread_Get (tid, &location);
diff --git a/cpukit/rtems/src/taskvariableget.c b/cpukit/rtems/src/taskvariableget.c
index 140729351e..b9db9f5bd6 100644
--- a/cpukit/rtems/src/taskvariableget.c
+++ b/cpukit/rtems/src/taskvariableget.c
@@ -32,6 +32,12 @@ rtems_status_code rtems_task_variable_get(
Objects_Locations location;
rtems_task_variable_t *tvp;
+ if ( !ptr )
+ return RTEMS_INVALID_ADDRESS;
+
+ if ( !result )
+ return RTEMS_INVALID_ADDRESS;
+
the_thread = _Thread_Get (tid, &location);
switch (location) {
case OBJECTS_REMOTE:
diff --git a/cpukit/rtems/src/taskwakewhen.c b/cpukit/rtems/src/taskwakewhen.c
index 6e938f3e1a..276a0c7f64 100644
--- a/cpukit/rtems/src/taskwakewhen.c
+++ b/cpukit/rtems/src/taskwakewhen.c
@@ -40,11 +40,11 @@
*
* Output parameters:
* RTEMS_SUCCESSFUL - if successful
- * error code - if unsuccessful
+ * error code - if unsuccessful
*/
rtems_status_code rtems_task_wake_when(
-rtems_time_of_day *time_buffer
+ rtems_time_of_day *time_buffer
)
{
Watchdog_Interval seconds;
@@ -52,6 +52,9 @@ rtems_time_of_day *time_buffer
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
+ if ( !time_buffer )
+ return RTEMS_INVALID_ADDRESS;
+
time_buffer->ticks = 0;
if ( !_TOD_Validate( time_buffer ) )
diff --git a/cpukit/rtems/src/timercreate.c b/cpukit/rtems/src/timercreate.c
index d00470fc9b..2a41411bc3 100644
--- a/cpukit/rtems/src/timercreate.c
+++ b/cpukit/rtems/src/timercreate.c
@@ -47,6 +47,9 @@ rtems_status_code rtems_timer_create(
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
+ if ( !id )
+ return RTEMS_INVALID_ADDRESS;
+
_Thread_Disable_dispatch(); /* to prevent deletion */
the_timer = _Timer_Allocate();
diff --git a/cpukit/rtems/src/timerdelete.c b/cpukit/rtems/src/timerdelete.c
index 455ca15648..2838d1ee1f 100644
--- a/cpukit/rtems/src/timerdelete.c
+++ b/cpukit/rtems/src/timerdelete.c
@@ -39,8 +39,8 @@ rtems_status_code rtems_timer_delete(
Objects_Id id
)
{
- Timer_Control *the_timer;
- Objects_Locations location;
+ Timer_Control *the_timer;
+ Objects_Locations location;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
diff --git a/cpukit/rtems/src/timerfireafter.c b/cpukit/rtems/src/timerfireafter.c
index fa5366826c..7b4660c82b 100644
--- a/cpukit/rtems/src/timerfireafter.c
+++ b/cpukit/rtems/src/timerfireafter.c
@@ -51,6 +51,9 @@ rtems_status_code rtems_timer_fire_after(
if ( ticks == 0 )
return RTEMS_INVALID_NUMBER;
+ if ( !routine )
+ return RTEMS_INVALID_ADDRESS;
+
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_REMOTE: /* should never return this */
diff --git a/cpukit/rtems/src/timerfirewhen.c b/cpukit/rtems/src/timerfirewhen.c
index 5ab4afc0c5..27175ff027 100644
--- a/cpukit/rtems/src/timerfirewhen.c
+++ b/cpukit/rtems/src/timerfirewhen.c
@@ -55,6 +55,9 @@ rtems_status_code rtems_timer_fire_when(
if ( !_TOD_Validate( wall_time ) )
return RTEMS_INVALID_CLOCK;
+ if ( !routine )
+ return RTEMS_INVALID_ADDRESS;
+
seconds = _TOD_To_seconds( wall_time );
if ( seconds <= _TOD_Seconds_since_epoch )
return RTEMS_INVALID_CLOCK;
diff --git a/cpukit/rtems/src/timerserverfireafter.c b/cpukit/rtems/src/timerserverfireafter.c
index 05d916b59b..a4c36bc6d0 100644
--- a/cpukit/rtems/src/timerserverfireafter.c
+++ b/cpukit/rtems/src/timerserverfireafter.c
@@ -53,6 +53,9 @@ rtems_status_code rtems_timer_server_fire_after(
if ( !_Timer_Server )
return RTEMS_INCORRECT_STATE;
+ if ( !routine )
+ return RTEMS_INVALID_ADDRESS;
+
if ( ticks == 0 )
return RTEMS_INVALID_NUMBER;
diff --git a/cpukit/rtems/src/timerserverfirewhen.c b/cpukit/rtems/src/timerserverfirewhen.c
index 4f4c2d6b50..a197ee2d55 100644
--- a/cpukit/rtems/src/timerserverfirewhen.c
+++ b/cpukit/rtems/src/timerserverfirewhen.c
@@ -57,6 +57,9 @@ rtems_status_code rtems_timer_server_fire_when(
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
+ if ( !routine )
+ return RTEMS_INVALID_ADDRESS;
+
if ( !_TOD_Validate( wall_time ) )
return RTEMS_INVALID_CLOCK;
diff --git a/cpukit/score/include/rtems/score/object.h b/cpukit/score/include/rtems/score/object.h
index da43ecdaca..71c9e190db 100644
--- a/cpukit/score/include/rtems/score/object.h
+++ b/cpukit/score/include/rtems/score/object.h
@@ -457,6 +457,7 @@ boolean _Objects_Compare_name_raw(
typedef enum {
OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL,
OBJECTS_INVALID_NAME,
+ OBJECTS_INVALID_ADDRESS,
OBJECTS_INVALID_ID,
OBJECTS_INVALID_NODE
} Objects_Name_or_id_lookup_errors;
diff --git a/cpukit/score/src/coretodvalidate.c b/cpukit/score/src/coretodvalidate.c
index 49f668ed67..1a92f81c57 100644
--- a/cpukit/score/src/coretodvalidate.c
+++ b/cpukit/score/src/coretodvalidate.c
@@ -40,7 +40,8 @@ boolean _TOD_Validate(
{
uint32_t days_in_month;
- if ((the_tod->ticks >= _TOD_Ticks_per_second) ||
+ if ((!the_tod) ||
+ (the_tod->ticks >= _TOD_Ticks_per_second) ||
(the_tod->second >= TOD_SECONDS_PER_MINUTE) ||
(the_tod->minute >= TOD_MINUTES_PER_HOUR) ||
(the_tod->hour >= TOD_HOURS_PER_DAY) ||
diff --git a/cpukit/score/src/objectnametoid.c b/cpukit/score/src/objectnametoid.c
index a72a8b6c58..c5a1a70a9d 100644
--- a/cpukit/score/src/objectnametoid.c
+++ b/cpukit/score/src/objectnametoid.c
@@ -56,6 +56,9 @@ Objects_Name_or_id_lookup_errors _Objects_Name_to_id(
uint32_t name_length;
Objects_Name_comparators compare_them;
+ if ( !id )
+ return OBJECTS_INVALID_ADDRESS;
+
if ( name == 0 )
return OBJECTS_INVALID_NAME;