summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikolay Edigaryev <edigaryev@gmail.com>2024-04-25 17:40:09 +0400
committerNikolay Edigaryev <edigaryev@gmail.com>2024-04-25 17:40:09 +0400
commite7495eb5c7a2a6511b5a337ad25a3b792df8d9bc (patch)
tree428cdbb34053f6dab52d02a36f0754980430982e
parentec2d118738facd1456a25bb67015e67094010b99 (diff)
copy_xattrs(): check xattr_resolve_name()'s return value
To avoid segmentation fault when encountering unsupported extended attributes. Such attributes are commonly encountered when attempting to migrate the root filesystem.
-rw-r--r--c_src/cmd_migrate.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/c_src/cmd_migrate.c b/c_src/cmd_migrate.c
index 5ac326dd..f3fe6c4c 100644
--- a/c_src/cmd_migrate.c
+++ b/c_src/cmd_migrate.c
@@ -229,6 +229,10 @@ static void copy_xattrs(struct bch_fs *c, struct bch_inode_unpacked *dst,
die("error getting xattr val: %m");
const struct xattr_handler *h = xattr_resolve_name(&attr);
+ if (IS_ERR(h))
+ die("cannot copy extended attribute \"%s\" "
+ "because it's unsupported", attr);
+
struct bch_inode_unpacked inode_u;
int ret = bch2_trans_do(c, NULL, NULL, 0,