LibCore: Improve handling of parsing errors in FilePermissionsMask
This commit is contained in:
parent
30f58de800
commit
070d70848f
Notes:
sideshowbarker
2024-07-17 20:19:55 +09:00
Author: https://github.com/xavier Commit: https://github.com/SerenityOS/serenity/commit/070d70848fc Pull-request: https://github.com/SerenityOS/serenity/pull/11812 Reviewed-by: https://github.com/boricj ✅
2 changed files with 7 additions and 1 deletions
|
@ -74,15 +74,19 @@ TEST_CASE(file_permission_mask_from_symbolic_notation)
|
|||
|
||||
mask = Core::FilePermissionsMask::from_symbolic_notation("z+rw"sv);
|
||||
EXPECT(mask.is_error());
|
||||
EXPECT(mask.error().string_literal().starts_with("invalid class"));
|
||||
|
||||
mask = Core::FilePermissionsMask::from_symbolic_notation("u*rw"sv);
|
||||
EXPECT(mask.is_error());
|
||||
EXPECT(mask.error().string_literal().starts_with("invalid operation"));
|
||||
|
||||
mask = Core::FilePermissionsMask::from_symbolic_notation("u+rz"sv);
|
||||
EXPECT(mask.is_error());
|
||||
EXPECT(mask.error().string_literal().starts_with("invalid symbolic permission"));
|
||||
|
||||
mask = Core::FilePermissionsMask::from_symbolic_notation("u+rw;g+rw"sv);
|
||||
EXPECT(mask.is_error());
|
||||
EXPECT(mask.error().string_literal().starts_with("invalid symbolic permission"));
|
||||
}
|
||||
|
||||
TEST_CASE(file_permission_mask_parse)
|
||||
|
|
|
@ -72,6 +72,8 @@ ErrorOr<FilePermissionsMask> FilePermissionsMask::from_symbolic_notation(StringV
|
|||
operation = Operation::Remove;
|
||||
else if (ch == '=')
|
||||
operation = Operation::Assign;
|
||||
else if (classes == 0)
|
||||
return Error::from_string_literal("invalid class: expected 'u', 'g', 'o' or 'a'"sv);
|
||||
else
|
||||
return Error::from_string_literal("invalid operation: expected '+', '-' or '='"sv);
|
||||
|
||||
|
@ -104,7 +106,7 @@ ErrorOr<FilePermissionsMask> FilePermissionsMask::from_symbolic_notation(StringV
|
|||
else if (ch == 'x')
|
||||
write_bits = 1;
|
||||
else
|
||||
return Error::from_string_literal("invalid symbolic permission"sv);
|
||||
return Error::from_string_literal("invalid symbolic permission: expected 'r', 'w' or 'x'"sv);
|
||||
|
||||
mode_t clear_bits = operation == Operation::Assign ? 7 : write_bits;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue