diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-12-21 12:21:11 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-12-21 15:45:55 +0100 |
commit | 3b91605e84e95695cce43fefb73d4a58a57a62bb (patch) | |
tree | 1f5498307606b6d1f90dd297c883e6c6ef1691e4 /cpukit/libfs | |
parent | libcsupport: Add rtems_resource_snapshot_take() (diff) | |
download | rtems-3b91605e84e95695cce43fefb73d4a58a57a62bb.tar.bz2 |
IMFS: Fix resource leak in IMFS_allocate_node()
Diffstat (limited to 'cpukit/libfs')
-rw-r--r-- | cpukit/libfs/src/imfs/imfs_creat.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/cpukit/libfs/src/imfs/imfs_creat.c b/cpukit/libfs/src/imfs/imfs_creat.c index 830480b83e..38c8385f43 100644 --- a/cpukit/libfs/src/imfs/imfs_creat.c +++ b/cpukit/libfs/src/imfs/imfs_creat.c @@ -32,6 +32,7 @@ IMFS_jnode_t *IMFS_allocate_node( ) { IMFS_jnode_t *node; + IMFS_jnode_t *initialized_node; struct timeval tv; if ( namelen > IMFS_NAME_MAX ) { @@ -82,7 +83,12 @@ IMFS_jnode_t *IMFS_allocate_node( node->stat_ctime = (time_t) tv.tv_sec; node->st_ino = ++fs_info->ino_count; - return (*node->control->node_initialize)( node, info ); + initialized_node = (*node->control->node_initialize)( node, info ); + if ( initialized_node == NULL ) { + free( node ); + } + + return initialized_node; } IMFS_jnode_t *IMFS_create_node_with_control( |