diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-05-06 13:41:28 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-05-06 13:46:20 +0200 |
commit | 7d1436e4b3d56062fa602d14430265807430a116 (patch) | |
tree | bbf9741e06825198d65defc1c1623d22e2c350aa | |
parent | score: Use atomic operations for SMP messages (diff) | |
download | rtems-7d1436e4b3d56062fa602d14430265807430a116.tar.bz2 |
posix: Fix POSIX keys initialization
Always initialize the freechain. This prevents a NULL pointer access in
case no initial key value pairs are defined.
-rw-r--r-- | cpukit/posix/src/key.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/cpukit/posix/src/key.c b/cpukit/posix/src/key.c index 10fc3e9388..de61b43e88 100644 --- a/cpukit/posix/src/key.c +++ b/cpukit/posix/src/key.c @@ -112,16 +112,16 @@ static bool _POSIX_Keys_Keypool_extend( Freechain_Control *keypool ) static void _POSIX_Keys_Initialize_keypool( void ) { + Freechain_Control *keypool = &_POSIX_Keys_Keypool; size_t initial_count = _POSIX_Keys_Get_initial_keypool_size(); - size_t size = initial_count * sizeof( POSIX_Keys_Key_value_pair ); - if ( size > 0 ) { - Freechain_Control *keypool = &_POSIX_Keys_Keypool; + _Freechain_Initialize( keypool, _POSIX_Keys_Keypool_extend ); + + if ( initial_count > 0 ) { + size_t size = initial_count * sizeof( POSIX_Keys_Key_value_pair ); POSIX_Keys_Key_value_pair *nodes = _Workspace_Allocate_or_fatal_error( size ); - _Freechain_Initialize( keypool, _POSIX_Keys_Keypool_extend ); - _Chain_Initialize( &keypool->Freechain, nodes, |