From c5e05165c9556bd3ce065365ef6c17eb88001bc8 Mon Sep 17 00:00:00 2001 From: szaka Date: Wed, 13 Jul 2005 17:07:13 +0000 Subject: [PATCH] Fix memory leak in ignore_bad_clusters() --- ntfsprogs/ntfsclone.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ntfsprogs/ntfsclone.c b/ntfsprogs/ntfsclone.c index 60de9f23..5dfac942 100644 --- a/ntfsprogs/ntfsclone.c +++ b/ntfsprogs/ntfsclone.c @@ -1383,7 +1383,7 @@ static void ignore_bad_clusters(ntfs_walk_clusters_ctx *image) { ntfs_inode *ni; ntfs_attr_search_ctx *ctx = NULL; - runlist *rl; + runlist *rl, *rl_bad; s64 nr_bad_clusters = 0; if (!(ni = ntfs_inode_open(vol, FILE_BadClus))) @@ -1392,10 +1392,10 @@ static void ignore_bad_clusters(ntfs_walk_clusters_ctx *image) if ((ctx = lookup_data_attr(ni, "$Bad")) == NULL) exit(1); - if (!(rl = ntfs_mapping_pairs_decompress(vol, ctx->attr, NULL))) + if (!(rl_bad = ntfs_mapping_pairs_decompress(vol, ctx->attr, NULL))) perr_exit("ntfs_mapping_pairs_decompress"); - for (; rl->length; rl++) { + for (rl = rl_bad; rl->length; rl++) { s64 lcn = rl->lcn; if (lcn == LCN_HOLE || lcn < 0) @@ -1409,6 +1409,7 @@ static void ignore_bad_clusters(ntfs_walk_clusters_ctx *image) if (nr_bad_clusters) Printf("WARNING: The disk has %lld or more bad sectors" " (hardware faults).\n", nr_bad_clusters); + free(rl_bad); ntfs_attr_put_search_ctx(ctx); if (ntfs_inode_close(ni))