Fix smb-server xattr: dereference Arc<Dir> before as_std_path()

This commit is contained in:
Warren
2026-06-22 15:41:03 +08:00
parent 0c4459ae66
commit 9dd2eefeea

View File

@@ -435,8 +435,8 @@ impl ShareBackend for LocalFsBackend {
let xattr_name = name.to_string();
spawn_blocking(move || {
// Get absolute path using as_std_path()
let full_path = root.as_std_path().join(&rel);
// Get absolute path: dereference Arc first
let full_path = (*root).as_std_path().join(&rel);
// Use xattr::get which returns Option<Vec<u8>>
match xattr::get(&full_path, &xattr_name) {
@@ -460,7 +460,7 @@ impl ShareBackend for LocalFsBackend {
let value = value.to_vec();
spawn_blocking(move || {
let full_path = root.as_std_path().join(&rel);
let full_path = (*root).as_std_path().join(&rel);
xattr::set(&full_path, &xattr_name, &value)
.map_err(|e| SmbError::Io(e.into()))
})
@@ -478,7 +478,7 @@ impl ShareBackend for LocalFsBackend {
let xattr_name = name.to_string();
spawn_blocking(move || {
let full_path = root.as_std_path().join(&rel);
let full_path = (*root).as_std_path().join(&rel);
xattr::remove(&full_path, &xattr_name)
.map_err(|e| SmbError::Io(e.into()))
})
@@ -491,7 +491,7 @@ impl ShareBackend for LocalFsBackend {
let root = Arc::clone(&self.root);
spawn_blocking(move || {
let full_path = root.as_std_path().join(&rel);
let full_path = (*root).as_std_path().join(&rel);
// xattr::list returns iterator of OsString
let attrs: Vec<String> = xattr::list(&full_path)