diff --git a/cpukit/score/src/objectgetinfo.c b/cpukit/score/src/objectgetinfo.c index 59780d9ae4..8f06a5eeec 100644 --- a/cpukit/score/src/objectgetinfo.c +++ b/cpukit/score/src/objectgetinfo.c @@ -66,6 +66,9 @@ Objects_Information *_Objects_Get_information( if ( !_Objects_Information_table[ the_api ] ) return NULL; + if ( the_class > OBJECTS_APIS_LAST ) + return NULL; + info = _Objects_Information_table[ the_api ][ the_class ]; if ( !info ) return NULL; diff --git a/testsuites/sptests/sp43/init.c b/testsuites/sptests/sp43/init.c index c396f680bd..999b50068e 100644 --- a/testsuites/sptests/sp43/init.c +++ b/testsuites/sptests/sp43/init.c @@ -378,8 +378,15 @@ rtems_task Init( ); puts( "rtems_object_get_class_information - INVALID_NUMBER (bad API)" ); - sc = - rtems_object_get_class_information(0, OBJECTS_INTERNAL_THREADS, &info); + sc = rtems_object_get_class_information(0, OBJECTS_INTERNAL_THREADS, &info); + fatal_directive_status( + sc, + RTEMS_INVALID_NUMBER, + "rtems_object_get_class_information (API)" + ); + + puts( "rtems_object_get_class_information - INVALID_NUMBER (API too high)" ); + sc = rtems_object_get_class_information(0, 4, &info); fatal_directive_status( sc, RTEMS_INVALID_NUMBER, diff --git a/testsuites/sptests/sp43/sp43.scn b/testsuites/sptests/sp43/sp43.scn index c71f087f96..350a7a480c 100644 --- a/testsuites/sptests/sp43/sp43.scn +++ b/testsuites/sptests/sp43/sp43.scn @@ -5,6 +5,7 @@ rtems_object_get_classic_name - INVALID_ADDRESS rtems_object_get_classic_name - INVALID_ID (bad index) rtems_object_get_classic_name - INVALID_ID (unallocated index) rtems_object_get_classic_name - INVALID_ID (bad API) +rtems_object_get_classic_name - INVALID_ID (API too high) UI1 - name returned by rtems_object_get_classic_name for Init task id UI1 - name returned by rtems_object_get_classic_name for RTEMS_SELF TEMP - rtems_build_name for TEMP