summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems/src/msgqcreate.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-01-10 14:03:46 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-01-10 14:04:10 +0100
commitcf8a351cb193bd20c991803825e5f84d4b7d7735 (patch)
treef2faafd6bd44feb81b54433347284799611c8d72 /cpukit/rtems/src/msgqcreate.c
parentIMFS: Documentation (diff)
downloadrtems-cf8a351cb193bd20c991803825e5f84d4b7d7735.tar.bz2
rtems: Avoid NULL pointer access
The _MPCI_table may be NULL in case multiprocessing is disabled in the application configuration.
Diffstat (limited to 'cpukit/rtems/src/msgqcreate.c')
-rw-r--r--cpukit/rtems/src/msgqcreate.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/cpukit/rtems/src/msgqcreate.c b/cpukit/rtems/src/msgqcreate.c
index e65dcacfe6..8a7abfa313 100644
--- a/cpukit/rtems/src/msgqcreate.c
+++ b/cpukit/rtems/src/msgqcreate.c
@@ -48,7 +48,6 @@ rtems_status_code rtems_message_queue_create(
CORE_message_queue_Attributes the_msgq_attributes;
#if defined(RTEMS_MULTIPROCESSING)
bool is_global;
- size_t max_packet_payload_size;
#endif
if ( !rtems_is_name_valid( name ) )
@@ -76,11 +75,14 @@ rtems_status_code rtems_message_queue_create(
* It seems reasonable to create a que with a large max size,
* and then just send smaller msgs from remote (or all) nodes.
*/
+ if ( is_global ) {
+ size_t max_packet_payload_size = _MPCI_table->maximum_packet_size
+ - MESSAGE_QUEUE_MP_PACKET_SIZE;
- max_packet_payload_size = _MPCI_table->maximum_packet_size
- - MESSAGE_QUEUE_MP_PACKET_SIZE;
- if ( is_global && max_packet_payload_size < max_message_size )
- return RTEMS_INVALID_SIZE;
+ if ( max_message_size > max_packet_payload_size ) {
+ return RTEMS_INVALID_SIZE;
+ }
+ }
#endif
#endif