Skip to content

Commit

Permalink
Update discovery-handlers/udev/src/discovery_handler.rs
Browse files Browse the repository at this point in the history
Co-authored-by: Kate Goldenring <kate.goldenring@gmail.com>
  • Loading branch information
bindsi and kate-goldenring authored Jan 22, 2025
1 parent 1939fbb commit fa3604e
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion discovery-handlers/udev/src/discovery_handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,30 @@ pub struct UdevDiscoveryDetails {
#[serde(default)]
pub group_recursive: bool,

#[serde(default = "default_permissions")]
#[serde(default = "default_permissions", )]
#[serde(deserialize_with = "validate_permissions")]
pub permissions: String,
}

// Validate the permissible set of cgroups `permissions`
fn validate_permissions<'de, D>(deserializer: D) -> Result<String, D::Error>
where
D: Deserializer<'de>,
{
let value: String = Deserialize::deserialize(deserializer)?;

// Validating that the string only contains allowed combinations of 'r', 'w', 'm'
let valid_permissions = ["r", "w", "m", "rw", "rm", "rwm", "mw"];
if valid_permissions.contains(&value.as_str()) {
Ok(value)
} else {
Err(de::Error::invalid_value(
de::Unexpected::Str(&value),
&"a valid permission combination ('r', 'w', 'm', 'rw', 'rm', 'rwm', 'mw')",
))
}
}

/// Default permissions for devices
fn default_permissions() -> String {
"rwm".to_string()
Expand Down

0 comments on commit fa3604e

Please sign in to comment.