From cf8a351cb193bd20c991803825e5f84d4b7d7735 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 10 Jan 2013 14:03:46 +0100 Subject: rtems: Avoid NULL pointer access The _MPCI_table may be NULL in case multiprocessing is disabled in the application configuration. --- cpukit/rtems/src/msgqcreate.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'cpukit/rtems/src/msgqcreate.c') 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 -- cgit v1.2.3