diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-03-18 15:19:35 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-03-18 16:26:31 +0100 |
commit | 6d9ab345e26377e920df91e83c5987f8c2b27f38 (patch) | |
tree | c93a1b1e2c8258a38c42b2b1c5e73e0302e1fb29 /cpukit/libfs/src/imfs/memfile.c | |
parent | bsp/edb7312: Improve output char (diff) | |
download | rtems-6d9ab345e26377e920df91e83c5987f8c2b27f38.tar.bz2 |
IMFS: Fix NULL pointer access
Diffstat (limited to '')
-rw-r--r-- | cpukit/libfs/src/imfs/memfile.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/cpukit/libfs/src/imfs/memfile.c b/cpukit/libfs/src/imfs/memfile.c index 901ebc6e2a..b467ae99aa 100644 --- a/cpukit/libfs/src/imfs/memfile.c +++ b/cpukit/libfs/src/imfs/memfile.c @@ -39,7 +39,7 @@ MEMFILE_STATIC int IMFS_memfile_addblock( unsigned int block ); -MEMFILE_STATIC int IMFS_memfile_remove_block( +MEMFILE_STATIC void IMFS_memfile_remove_block( IMFS_jnode_t *the_jnode, unsigned int block ); @@ -273,6 +273,9 @@ MEMFILE_STATIC int IMFS_memfile_addblock( * Obtain the pointer for the specified block number */ block_entry_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 1 ); + if ( !block_entry_ptr ) + return 1; + if ( *block_entry_ptr ) return 0; @@ -297,7 +300,7 @@ MEMFILE_STATIC int IMFS_memfile_addblock( * block from the middle of a file would be exceptionally * dangerous and the results unpredictable. */ -MEMFILE_STATIC int IMFS_memfile_remove_block( +MEMFILE_STATIC void IMFS_memfile_remove_block( IMFS_jnode_t *the_jnode, unsigned int block ) @@ -306,13 +309,11 @@ MEMFILE_STATIC int IMFS_memfile_remove_block( block_p ptr; block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 ); - IMFS_assert( block_ptr ); - - ptr = *block_ptr; - *block_ptr = 0; - memfile_free_block( ptr ); - - return 1; + if ( block_ptr ) { + ptr = *block_ptr; + *block_ptr = 0; + memfile_free_block( ptr ); + } } /* |