From 307c09774e7bc4702d24c4469b594279741ad300 Mon Sep 17 00:00:00 2001 From: "cantab.net!aia21" Date: Thu, 16 Sep 2004 10:10:20 +0000 Subject: [PATCH] Fix bugs in handling of ->extent_nis in base inodes. (Logical change 1.559) --- libntfs/inode.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/libntfs/inode.c b/libntfs/inode.c index f75eb131..6bbbb819 100644 --- a/libntfs/inode.c +++ b/libntfs/inode.c @@ -224,7 +224,6 @@ int ntfs_inode_close(ntfs_inode *ni) return -1; } } - free(ni->extent_nis); } else if (ni->nr_extents == -1) { ntfs_inode **tmp_nis; ntfs_inode *base_ni; @@ -247,11 +246,12 @@ int ntfs_inode_close(ntfs_inode *ni) /* Resize the memory buffer. */ tmp_nis = realloc(tmp_nis, base_ni->nr_extents * sizeof(ntfs_inode *)); - /* Ignore errors, they don't really matter. */ + /* Ignore realloc errors, they don't really matter. */ if (tmp_nis) base_ni->extent_nis = tmp_nis; /* Allow for error checking. */ i = -1; + break; } if (i != -1) Dputs("Extent inode was not attached to base inode! " @@ -339,7 +339,7 @@ ntfs_inode *ntfs_extent_inode_open(ntfs_inode *base_ni, const MFT_REF mref) extent_nis = (ntfs_inode**)malloc(i); if (!extent_nis) goto err_out; - if (base_ni->extent_nis) { + if (base_ni->nr_extents) { memcpy(extent_nis, base_ni->extent_nis, i - 4 * sizeof(ntfs_inode *)); free(base_ni->extent_nis); @@ -453,4 +453,3 @@ int ntfs_inode_sync(ntfs_inode *ni) errno = err; return -1; } -