diff options
author | Nikolay Edigaryev <edigaryev@gmail.com> | 2024-04-25 17:40:09 +0400 |
---|---|---|
committer | Nikolay Edigaryev <edigaryev@gmail.com> | 2024-04-25 17:40:09 +0400 |
commit | e7495eb5c7a2a6511b5a337ad25a3b792df8d9bc (patch) | |
tree | 428cdbb34053f6dab52d02a36f0754980430982e | |
parent | ec2d118738facd1456a25bb67015e67094010b99 (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.c | 4 |
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, |