From c3fce4f9ba69db41185bfb42654e6546029f7071 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Wed, 1 Mar 2023 08:05:34 -0800 Subject: [PATCH] mkfs: check dirent names when reading protofile The protofile parser in mkfs does not check directory entry names when populating the filesystem. The libxfs directory code doesn't check them either, since they depend on the Linux VFS to sanitize incoming names. If someone puts a slash in the first (name) column in the protofile, this results in a successful format and xfs_repair -n immediately complains. Screen the names that are being read from the protofile. Signed-off-by: Darrick J. Wong Reviewed-by: Carlos Maiolino Signed-off-by: Carlos Maiolino --- mkfs/proto.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mkfs/proto.c b/mkfs/proto.c index 68ecdbf36..7e3fc1b81 100644 --- a/mkfs/proto.c +++ b/mkfs/proto.c @@ -326,6 +326,12 @@ newdirent( int error; int rsv; + if (!libxfs_dir2_namecheck(name->name, name->len)) { + fprintf(stderr, _("%.*s: invalid directory entry name\n"), + name->len, name->name); + exit(1); + } + rsv = XFS_DIRENTER_SPACE_RES(mp, name->len); error = -libxfs_dir_createname(tp, pip, name, inum, rsv); -- 2.39.5