From 03cc24113c1a4f5e8ff4c461100cb994af3ecfcc Mon Sep 17 00:00:00 2001 From: xli-oai Date: Mon, 4 May 2026 15:49:59 -0700 Subject: [PATCH] Tighten marketplace root removal --- codex-rs/core-plugins/src/marketplace_remove.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/codex-rs/core-plugins/src/marketplace_remove.rs b/codex-rs/core-plugins/src/marketplace_remove.rs index aa5a5078aa..0631dcaece 100644 --- a/codex-rs/core-plugins/src/marketplace_remove.rs +++ b/codex-rs/core-plugins/src/marketplace_remove.rs @@ -74,7 +74,12 @@ fn remove_marketplace_sync( } fn remove_marketplace_root(root: &Path) -> Result, MarketplaceRemoveError> { - if !root.exists() { + if !root.try_exists().map_err(|err| { + MarketplaceRemoveError::Internal(format!( + "failed to check installed marketplace root {}: {err}", + root.display() + )) + })? { return Ok(None); } @@ -90,10 +95,16 @@ fn remove_marketplace_root(root: &Path) -> Result, Marke root.display() )) })?; - let remove_result = if metadata.is_dir() { + let file_type = metadata.file_type(); + let remove_result = if file_type.is_dir() { fs::remove_dir_all(root) - } else { + } else if file_type.is_file() { fs::remove_file(root) + } else { + return Err(MarketplaceRemoveError::Internal(format!( + "installed marketplace root {} is neither a file nor a directory", + root.display() + ))); }; remove_result.map_err(|err| { MarketplaceRemoveError::Internal(format!(