(descriptor: &ExtensionDescriptor)
| 735 | } |
| 736 | |
| 737 | fn validate_descriptor_strings(descriptor: &ExtensionDescriptor) -> LifecycleResult<()> { |
| 738 | for value in descriptor |
| 739 | .provides |
| 740 | .kernel_profiles |
| 741 | .iter() |
| 742 | .chain(descriptor.provides.guest_init_dropins.iter()) |
| 743 | .chain(descriptor.provides.launch_features.iter()) |
| 744 | .chain(descriptor.provides.host_resources.iter()) |
| 745 | { |
| 746 | validate_extension_identifier(value).map_err(|err| { |
| 747 | LifecycleError::new(format!( |
| 748 | "lifecycle extension '{}' has invalid provided capability '{}': {err}", |
| 749 | descriptor.name, value |
| 750 | )) |
| 751 | })?; |
| 752 | } |
| 753 | Ok(()) |
| 754 | } |
| 755 | |
| 756 | fn validate_extension_identifier(value: &str) -> Result<(), &'static str> { |
| 757 | if value.is_empty() || value == "." || value == ".." { |
no test coverage detected