From 39db6eb85e3a515804c3a331ddd6021d575194ce Mon Sep 17 00:00:00 2001 From: Quratulain-bilal Date: Wed, 29 Jul 2026 13:23:07 +0500 Subject: [PATCH] fix: use missing_ok=True in extension cache clear Replace check-then-act pattern (exists()+unlink()) with unlink(missing_ok=True) to eliminate TOCTOU race condition. Matches the pattern already used for per-URL cache files in the same method. --- src/specify_cli/extensions/__init__.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/specify_cli/extensions/__init__.py b/src/specify_cli/extensions/__init__.py index 6cd48582b0..6c60a5d557 100644 --- a/src/specify_cli/extensions/__init__.py +++ b/src/specify_cli/extensions/__init__.py @@ -3829,10 +3829,8 @@ def download_extension( def clear_cache(self): """Clear the catalog cache (both legacy and URL-hash-based files).""" - if self.cache_file.exists(): - self.cache_file.unlink() - if self.cache_metadata_file.exists(): - self.cache_metadata_file.unlink() + self.cache_file.unlink(missing_ok=True) + self.cache_metadata_file.unlink(missing_ok=True) # Also clear any per-URL hash-based cache files if self.cache_dir.exists(): for extra_cache in self.cache_dir.glob("catalog-*.json"):