[PATCH mtd-utils 1/2] fsck.ubifs: don't use pointers that reference out-of-scope variables

Yuta Hayama hayama at lineo.co.jp
Thu Nov 13 00:31:32 PST 2025


sn is a reference to either an ino_node, dent_node, or data_node. When sn
is actually used in calls to dbg_fsck() or insert_or_update_file(), these
variables must not be out of scope.

Signed-off-by: Yuta Hayama <hayama at lineo.co.jp>
---
 ubifs-utils/fsck.ubifs/check_files.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/ubifs-utils/fsck.ubifs/check_files.c b/ubifs-utils/fsck.ubifs/check_files.c
index 1e1a77b..54300a3 100644
--- a/ubifs-utils/fsck.ubifs/check_files.c
+++ b/ubifs-utils/fsck.ubifs/check_files.c
@@ -57,12 +57,13 @@ static int construct_file(struct ubifs_info *c, union ubifs_key *key,
 	struct rb_root *tree = &FSCK(c)->scanned_files;
 	struct scanned_node *sn = NULL;
 	struct ubifs_ch *ch = (struct ubifs_ch *)node;
+	struct scanned_ino_node ino_node;
+	struct scanned_dent_node dent_node;
+	struct scanned_data_node data_node;
 
 	switch (ch->node_type) {
 	case UBIFS_INO_NODE:
 	{
-		struct scanned_ino_node ino_node;
-
 		if (!parse_ino_node(c, lnum, offs, node, key, &ino_node)) {
 			if (fix_problem(c, INVALID_INO_NODE, NULL))
 				return add_invalid_node(c, key, lnum, offs, iter);
@@ -74,8 +75,6 @@ static int construct_file(struct ubifs_info *c, union ubifs_key *key,
 	case UBIFS_DENT_NODE:
 	case UBIFS_XENT_NODE:
 	{
-		struct scanned_dent_node dent_node;
-
 		if (!parse_dent_node(c, lnum, offs, node, key, &dent_node)) {
 			if (fix_problem(c, INVALID_DENT_NODE, NULL))
 				return add_invalid_node(c, key, lnum, offs, iter);
@@ -86,8 +85,6 @@ static int construct_file(struct ubifs_info *c, union ubifs_key *key,
 	}
 	case UBIFS_DATA_NODE:
 	{
-		struct scanned_data_node data_node;
-
 		if (!parse_data_node(c, lnum, offs, node, key, &data_node)) {
 			if (fix_problem(c, INVALID_DATA_NODE, NULL))
 				return add_invalid_node(c, key, lnum, offs, iter);
-- 
2.43.0





More information about the linux-mtd mailing list