diff options
author | Florian Klink <flokli@flokli.de> | 2024-04-30T09·16+0300 |
---|---|---|
committer | flokli <flokli@flokli.de> | 2024-04-30T13·18+0000 |
commit | 5e8cfcfcd6289cff5c4391fa93e4246ec1cf6c23 (patch) | |
tree | 485f789cdc5e9c2405e8166a44e83966e8adfd71 /tvix/castore/src/import/fs.rs | |
parent | ca64881cb3fe4a5e30baf0f0b1f457af44bb143a (diff) |
fix(tvix/castore/import): symlink targets are Vec<u8> r/8045
These can be arbitrary bytes in theory. Some of our libraries might be more strict, or inconsistent w.r.t. their representation of path separators. Change-Id: I7981b74fc7d3dd79f5589cf2ef52ced7b71dd003 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11551 Tested-by: BuildkiteCI Reviewed-by: edef <edef@edef.eu>
Diffstat (limited to 'tvix/castore/src/import/fs.rs')
-rw-r--r-- | tvix/castore/src/import/fs.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/tvix/castore/src/import/fs.rs b/tvix/castore/src/import/fs.rs index 03a52f2ba073..5e7061bec66d 100644 --- a/tvix/castore/src/import/fs.rs +++ b/tvix/castore/src/import/fs.rs @@ -2,6 +2,7 @@ use futures::stream::BoxStream; use futures::StreamExt; +use std::os::unix::ffi::OsStringExt; use std::os::unix::fs::MetadataExt; use std::os::unix::fs::PermissionsExt; use std::path::Path; @@ -108,7 +109,9 @@ where Ok(IngestionEntry::Dir { path }) } else if file_type.is_symlink() { let target = std::fs::read_link(entry.path()) - .map_err(|e| Error::UnableToStat(entry.path().to_path_buf(), e))?; + .map_err(|e| Error::UnableToStat(entry.path().to_path_buf(), e))? + .into_os_string() + .into_vec(); Ok(IngestionEntry::Symlink { path, target }) } else if file_type.is_file() { |