From 193fd3b4d228b4c5c9ce35e47a2c7367e8b644a7 Mon Sep 17 00:00:00 2001 From: Peter Colberg Date: Wed, 29 Oct 2025 13:31:12 -0400 Subject: [PATCH] kargs: correctly split kernel command-line string with quoted arguments Splitting the kernel command-line on whitespace breaks quoted arguments, e.g., "dyndbg=\"file drivers/base/firmware_loader/main.c +fmp\"". Use the bootc_kernel_cmdline crate to parse and split kernel arguments, which unbreaks deployment when a quoted kernel argument is present. Closes: https://github.com/ostreedev/ostree/issues/3544 Signed-off-by: Peter Colberg --- crates/lib/src/bootc_kargs.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/crates/lib/src/bootc_kargs.rs b/crates/lib/src/bootc_kargs.rs index ec1be4e6c..a028c9dca 100644 --- a/crates/lib/src/bootc_kargs.rs +++ b/crates/lib/src/bootc_kargs.rs @@ -124,7 +124,10 @@ pub(crate) fn get_kargs( // Get the kargs used for the merge in the bootloader config if let Some(bootconfig) = ostree::Deployment::bootconfig(merge_deployment) { if let Some(options) = ostree::BootconfigParser::get(&bootconfig, "options") { - let options = options.split_whitespace().map(|s| s.to_owned()); + let options = bootc_kernel_cmdline::utf8::Cmdline::from(options.as_str()) + .iter() + .map(|s| s.to_string()) + .collect::>(); kargs.extend(options); } };