[parted-devel] [PATCH] libparted: Fix possible memory leaks
Amarnath Valluri
amarnath.valluri at intel.com
Tue Aug 4 09:45:52 UTC 2015
* libparted/fs/r/fat/resize.c(fat_convert_directory): Possible leak
of sub_old_dir_trav or sub_new_dir_trav in error case.
* libparted/fs/r/fat/resize.c(fat_construct_converted_tree ): Possible
leak of new_trav_info or old_trav_info in error case.
Signed-off-by: Amarnath Valluri <amarnath.valluri at intel.com>
---
libparted/fs/r/fat/resize.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/libparted/fs/r/fat/resize.c b/libparted/fs/r/fat/resize.c
index bfe60a0..3481e5b 100644
--- a/libparted/fs/r/fat/resize.c
+++ b/libparted/fs/r/fat/resize.c
@@ -177,10 +177,13 @@ fat_convert_directory (FatOpContext* ctx, FatTraverseInfo* old_trav,
&& old_dir_entry->name [0] != '.') {
sub_old_dir_trav
= fat_traverse_directory (old_trav, old_dir_entry);
+ if (!sub_old_dir_trav) return 0;
sub_new_dir_trav
= fat_traverse_directory (new_trav, new_dir_entry);
- if (!sub_old_dir_trav || !sub_new_dir_trav)
+ if (!sub_new_dir_trav) {
+ fat_traverse_complete (sub_old_dir_trav);
return 0;
+ }
if (!fat_convert_directory (ctx, sub_old_dir_trav,
sub_new_dir_trav))
@@ -315,17 +318,25 @@ fat_construct_converted_tree (FatOpContext* ctx)
if (new_fs_info->fat_type == FAT_TYPE_FAT32) {
new_trav_info = fat_traverse_begin (ctx->new_fs,
new_fs_info->root_cluster, "\\");
+ if (!new_trav_info) return 0;
old_trav_info = fat_traverse_begin (ctx->old_fs, FAT_ROOT,
"\\");
+ if (!old_trav_info) {
+ fat_traverse_complete (new_trav_info);
+ return 0;
+ }
} else {
fat_clear_root_dir (ctx->new_fs);
new_trav_info = fat_traverse_begin (ctx->new_fs, FAT_ROOT,
"\\");
+ if (!new_trav_info) return 0;
old_trav_info = fat_traverse_begin (ctx->old_fs,
old_fs_info->root_cluster, "\\");
+ if (!old_trav_info) {
+ fat_traverse_complete (new_trav_info);
+ return 0;
+ }
}
- if (!new_trav_info || !old_trav_info)
- return 0;
if (!fat_convert_directory (ctx, old_trav_info, new_trav_info))
return 0;
return 1;
--
1.9.4
---------------------------------------------------------------------
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki
Business Identity Code: 0357606 - 4
Domiciled in Helsinki
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
More information about the parted-devel
mailing list