summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-12-21 12:21:11 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-12-21 15:45:55 +0100
commit3b91605e84e95695cce43fefb73d4a58a57a62bb (patch)
tree1f5498307606b6d1f90dd297c883e6c6ef1691e4 /cpukit/libfs
parentlibcsupport: Add rtems_resource_snapshot_take() (diff)
downloadrtems-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.c8
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(