From d066e9c9d2254d4eb2f8268ebf2f8ddfb08cf99b Mon Sep 17 00:00:00 2001 From: keisku Date: Thu, 4 Jul 2024 13:20:58 +0000 Subject: [PATCH] Revert "avoid using regex" This reverts commit 73c974022d784d562d8400af0c8bd844fb1d7cf2. Signed-off-by: keisku --- Cargo.toml | 2 ++ src/runtime/process.rs | 32 ++++++++------------------------ 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 9b2343e068..dc16cd7f9c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,6 +32,8 @@ derive_builder = "0.20.0" getset = "0.1.1" strum = "0.26.2" strum_macros = "0.26.2" +regex = "1.10.5" +once_cell = "1.19.0" [dev-dependencies] tempfile = "3.2.0" diff --git a/src/runtime/process.rs b/src/runtime/process.rs index 108a7decab..20d197a1c1 100644 --- a/src/runtime/process.rs +++ b/src/runtime/process.rs @@ -4,6 +4,8 @@ use crate::{ }; use derive_builder::Builder; use getset::{CopyGetters, Getters, MutGetters, Setters}; +use once_cell::sync::Lazy; +use regex::Regex; use serde::{de, Deserialize, Deserializer, Serialize}; use std::path::PathBuf; use strum_macros::{Display as StrumDisplay, EnumString}; @@ -621,31 +623,13 @@ where Ok(value) } -fn validate_cpu_affinity(s: &str) -> Result<(), String> { - let iter = s.split(','); - - for part in iter { - let mut range_iter = part.split('-'); - let start = range_iter - .next() - .ok_or_else(|| format!("Invalid execCPUAffinity format: {}", s))?; - - // Check if the start is a valid number - if start.parse::().is_err() { - return Err(format!("Invalid execCPUAffinity format: {}", s)); - } +static EXEC_CPU_AFFINITY_REGEX: Lazy = Lazy::new(|| { + Regex::new(r"^(\d+(-\d+)?)(,\d+(-\d+)?)*$").expect("Failed to create regex for execCPUAffinity") +}); - // Check if there's a range and if the end is a valid number - if let Some(end) = range_iter.next() { - if end.parse::().is_err() { - return Err(format!("Invalid execCPUAffinity format: {}", s)); - } - } - - // Ensure there's no extra data after the end of a range - if range_iter.next().is_some() { - return Err(format!("Invalid execCPUAffinity format: {}", s)); - } +fn validate_cpu_affinity(s: &str) -> Result<(), String> { + if !EXEC_CPU_AFFINITY_REGEX.is_match(s) { + return Err(format!("Invalid execCPUAffinity format: {}", s)); } Ok(())