From e7495eb5c7a2a6511b5a337ad25a3b792df8d9bc Mon Sep 17 00:00:00 2001 From: Nikolay Edigaryev Date: Thu, 25 Apr 2024 17:40:09 +0400 Subject: 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. --- c_src/cmd_migrate.c | 4 ++++ 1 file changed, 4 insertions(+) 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, -- cgit v1.2.3-70-g09d2