fix(tvix/store/fuse): fix executable bit

We were blindly returning 0o444 for all regular files, but regular files
with executable bit need to be 0o555.

This wasn't spotted because stat'ing executable files was not part of
the test suite, it's now added.

Change-Id: I04c69784053e7e43d838c01bb288f2df48f40b4e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9345
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Reviewed-by: Connor Brewster <cbrewster@hey.com>
This commit is contained in:
Florian Klink 2023-09-17 14:36:15 +03:00 committed by flokli
parent da6cbb4a45
commit bf2fe88a5c
2 changed files with 38 additions and 1 deletions

View file

@ -43,7 +43,8 @@ pub fn gen_file_attr(inode_data: &InodeData, inode: u64) -> FileAttr {
crtime: SystemTime::UNIX_EPOCH,
kind: inode_data.into(),
perm: match inode_data {
InodeData::Regular(..) => 0o444,
InodeData::Regular(_, _, false) => 0o444, // no-executable files
InodeData::Regular(_, _, true) => 0o555, // executable files
InodeData::Symlink(_) => 0o444,
InodeData::Directory(..) => 0o555,
},