From 6d9ab345e26377e920df91e83c5987f8c2b27f38 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 18 Mar 2013 15:19:35 +0100 Subject: [PATCH] IMFS: Fix NULL pointer access --- cpukit/libfs/src/imfs/memfile.c | 19 ++++++++++--------- 1 file 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 ); + } } /*