summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-03-18 15:19:35 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-03-18 16:26:31 +0100
commit6d9ab345e26377e920df91e83c5987f8c2b27f38 (patch)
treec93a1b1e2c8258a38c42b2b1c5e73e0302e1fb29 /cpukit/libfs
parentbsp/edb7312: Improve output char (diff)
downloadrtems-6d9ab345e26377e920df91e83c5987f8c2b27f38.tar.bz2
IMFS: Fix NULL pointer access
Diffstat (limited to 'cpukit/libfs')
-rw-r--r--cpukit/libfs/src/imfs/memfile.c19
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 );
+ }
}
/*