aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ext2fs/dupfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ext2fs/dupfs.c')
-rw-r--r--lib/ext2fs/dupfs.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/lib/ext2fs/dupfs.c b/lib/ext2fs/dupfs.c
index 8c6f1598..f358eca2 100644
--- a/lib/ext2fs/dupfs.c
+++ b/lib/ext2fs/dupfs.c
@@ -28,9 +28,10 @@ errcode_t ext2fs_dup_handle(ext2_filsys src, ext2_filsys *dest)
EXT2_CHECK_MAGIC(src, EXT2_ET_MAGIC_EXT2FS_FILSYS);
- fs = (ext2_filsys) malloc(sizeof(struct struct_ext2_filsys));
- if (!fs)
- return EXT2_NO_MEMORY;
+ retval = ext2fs_get_mem(sizeof(struct struct_ext2_filsys),
+ (void **) &fs);
+ if (retval)
+ return retval;
*fs = *src;
fs->device_name = 0;
@@ -45,19 +46,20 @@ errcode_t ext2fs_dup_handle(ext2_filsys src, ext2_filsys *dest)
if (fs->icache)
fs->icache->refcount++;
- retval = EXT2_NO_MEMORY;
- fs->device_name = malloc(strlen(src->device_name)+1);
- if (!fs->device_name)
+ retval = ext2fs_get_mem(strlen(src->device_name)+1,
+ (void **) &fs->device_name);
+ if (retval)
goto errout;
strcpy(fs->device_name, src->device_name);
- fs->super = malloc(SUPERBLOCK_SIZE);
- if (!fs->super)
+ retval = ext2fs_get_mem(SUPERBLOCK_SIZE, (void **) &fs->super);
+ if (retval)
goto errout;
memcpy(fs->super, src->super, SUPERBLOCK_SIZE);
- fs->group_desc = malloc((size_t) fs->desc_blocks * fs->blocksize);
- if (!fs->group_desc)
+ retval = ext2fs_get_mem((size_t) fs->desc_blocks * fs->blocksize,
+ (void **) &fs->group_desc);
+ if (retval)
goto errout;
memcpy(fs->group_desc, src->group_desc,
(size_t) fs->desc_blocks * fs->blocksize);