Blame SOURCES/e2fsprogs-1.42.9-set-pointer-to-NULL-after-ext2fs_free.patch

0ef434
From 68ef8adcff3acc25ddac82b808c3036b4dddaf0b Mon Sep 17 00:00:00 2001
0ef434
From: Lukas Czerner <lczerner@redhat.com>
0ef434
Date: Thu, 20 Feb 2014 14:14:39 +0100
0ef434
Subject: [PATCH 8/8] e2fsprogs: Set pointer to NULL after ext2fs_free
0ef434
0ef434
ext2fs_free() does not set the ext2_filsys pointer to null so the caller
0ef434
is responsible to setting it himself if it is needed.
0ef434
0ef434
This patch fixes some places where caller did not set ext2_filsys
0ef434
pointer to NULL after ext2fs_free() which might result in use after
0ef434
free. Fix it.
0ef434
0ef434
Signed-off-by: Lukas Czerner <lczerner@redhat.com>
0ef434
---
0ef434
 lib/ext2fs/openfs.c | 7 ++++---
0ef434
 resize/resize2fs.c  | 5 ++++-
0ef434
 2 files changed, 8 insertions(+), 4 deletions(-)
0ef434
0ef434
diff --git a/lib/ext2fs/openfs.c b/lib/ext2fs/openfs.c
0ef434
index 4cdbde1..ef67493 100644
0ef434
--- a/lib/ext2fs/openfs.c
0ef434
+++ b/lib/ext2fs/openfs.c
0ef434
@@ -419,10 +419,11 @@ errcode_t ext2fs_open2(const char *name, const char *io_options,
0ef434
 
0ef434
 	return 0;
0ef434
 cleanup:
0ef434
-	if (flags & EXT2_FLAG_NOFREE_ON_ERROR)
0ef434
-		*ret_fs = fs;
0ef434
-	else
0ef434
+	if (!(flags & EXT2_FLAG_NOFREE_ON_ERROR)) {
0ef434
 		ext2fs_free(fs);
0ef434
+		fs = NULL;
0ef434
+	}
0ef434
+	*ret_fs = fs;
0ef434
 	return retval;
0ef434
 }
0ef434
 
0ef434
diff --git a/resize/resize2fs.c b/resize/resize2fs.c
0ef434
index 6b32bbf..a1fdefa 100644
0ef434
--- a/resize/resize2fs.c
0ef434
+++ b/resize/resize2fs.c
0ef434
@@ -202,6 +202,7 @@ errcode_t resize_fs(ext2_filsys fs, blk64_t *new_size, int flags,
0ef434
 	rfs->flags = flags;
0ef434
 
0ef434
 	ext2fs_free(rfs->old_fs);
0ef434
+	rfs->old_fs = NULL;
0ef434
 	if (rfs->itable_buf)
0ef434
 		ext2fs_free_mem(&rfs->itable_buf);
0ef434
 	if (rfs->reserve_blocks)
0ef434
@@ -213,8 +214,10 @@ errcode_t resize_fs(ext2_filsys fs, blk64_t *new_size, int flags,
0ef434
 	return 0;
0ef434
 
0ef434
 errout:
0ef434
-	if (rfs->new_fs)
0ef434
+	if (rfs->new_fs) {
0ef434
 		ext2fs_free(rfs->new_fs);
0ef434
+		rfs->new_fs = NULL;
0ef434
+	}
0ef434
 	if (rfs->itable_buf)
0ef434
 		ext2fs_free_mem(&rfs->itable_buf);
0ef434
 	ext2fs_free_mem(&rfs;;
0ef434
-- 
0ef434
1.8.3.1
0ef434