Handle the new LANDLOCK_ACCESS_FS_READ_METADATA and LANDLOCK_ACCESS_FS_WRITE_METADATA access rights in the sandboxer: READ_METADATA is added to the read-only set, WRITE_METADATA to the read-write set, and both to ACCESS_FILE.
Update the ABI version fallback switch to remove the metadata rights for ABI < 13, and bump LANDLOCK_ABI_LAST to 13. Assisted-by: opencode: glm-5.3 Signed-off-by: Cai Xinchen <[email protected]> --- samples/landlock/sandboxer.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/samples/landlock/sandboxer.c b/samples/landlock/sandboxer.c index 1362f08ff14b..29965ef90bed 100644 --- a/samples/landlock/sandboxer.c +++ b/samples/landlock/sandboxer.c @@ -137,6 +137,8 @@ static int parse_path(char *env_path, const char ***const path_list) LANDLOCK_ACCESS_FS_EXECUTE | \ LANDLOCK_ACCESS_FS_WRITE_FILE | \ LANDLOCK_ACCESS_FS_READ_FILE | \ + LANDLOCK_ACCESS_FS_READ_METADATA | \ + LANDLOCK_ACCESS_FS_WRITE_METADATA | \ LANDLOCK_ACCESS_FS_TRUNCATE | \ LANDLOCK_ACCESS_FS_IOCTL_DEV | \ LANDLOCK_ACCESS_FS_RESOLVE_UNIX) @@ -487,7 +489,8 @@ static bool check_ruleset_scope(const char *const env_var, #define ACCESS_FS_ROUGHLY_READ ( \ LANDLOCK_ACCESS_FS_EXECUTE | \ LANDLOCK_ACCESS_FS_READ_FILE | \ - LANDLOCK_ACCESS_FS_READ_DIR) + LANDLOCK_ACCESS_FS_READ_DIR | \ + LANDLOCK_ACCESS_FS_READ_METADATA) #define ACCESS_FS_ROUGHLY_WRITE ( \ LANDLOCK_ACCESS_FS_WRITE_FILE | \ @@ -503,7 +506,8 @@ static bool check_ruleset_scope(const char *const env_var, LANDLOCK_ACCESS_FS_REFER | \ LANDLOCK_ACCESS_FS_TRUNCATE | \ LANDLOCK_ACCESS_FS_IOCTL_DEV | \ - LANDLOCK_ACCESS_FS_RESOLVE_UNIX) + LANDLOCK_ACCESS_FS_RESOLVE_UNIX | \ + LANDLOCK_ACCESS_FS_WRITE_METADATA) /* clang-format on */ @@ -570,7 +574,7 @@ static int add_quiet_access(const char *const env_var, return 0; } -#define LANDLOCK_ABI_LAST 12 +#define LANDLOCK_ABI_LAST 13 #define XSTR(s) #s #define STR(s) XSTR(s) @@ -780,6 +784,12 @@ int main(const int argc, char *const argv[], char *const *const envp) ruleset_attr.handled_permissions &= ~(LANDLOCK_PERMISSION_NAMESPACE_USE | LANDLOCK_PERMISSION_CAPABILITY_USE); + __attribute__((fallthrough)); + case 12: + /* Removes metadata rights for ABI < 13 */ + ruleset_attr.handled_access_fs &= + ~(LANDLOCK_ACCESS_FS_READ_METADATA | + LANDLOCK_ACCESS_FS_WRITE_METADATA); /* Must be printed for any ABI < LANDLOCK_ABI_LAST. */ fprintf(stderr, "Hint: You should update the running kernel " -- 2.18.0.huawei.25
