fix: correct path traversal docstring, total_raw inflation, and config re-stat (v0.5.8)
- executor.py: fix _safe_person_dir docstring — realpath+startswith is the load-bearing traversal guard; islink is a supplementary early-exit for the symlink sub-case only. The previous comment "checking after realpath would be too late" implied islink was the primary guard, which is backwards. - immich_api.py: move total_raw accumulation to after the dead-end-page break so all-garbage pages don't inflate the count and produce misleading "N total, 0 recent" output. Mixed pages (some valid, some non-dict) still count page_count so transient schema issues don't shrink MIN_FACE_COUNT below threshold. Add warning when a RequestException interrupts pagination mid-way so operators know total_raw is a lower bound. - config.py: eliminate residual TOCTOU — change `if config_file.exists():` to `if _data_cfg_exists or config_file.exists():` so _data_cfg is never stat'd twice (the v0.5.7 fix cached the first check but not the second).
This commit is contained in:
+3
-1
@@ -132,7 +132,9 @@ class _Config:
|
||||
_data_cfg,
|
||||
)
|
||||
config_file = _data_cfg if _data_cfg_exists else _LEGACY_CONFIG_FILE
|
||||
if config_file.exists():
|
||||
# _data_cfg_exists already confirmed the primary path — avoid re-stat.
|
||||
# The short-circuit means the legacy path is stat'd at most once here.
|
||||
if _data_cfg_exists or config_file.exists():
|
||||
try:
|
||||
data = json.loads(config_file.read_text())
|
||||
if self.IMMICH_URL is None:
|
||||
|
||||
Reference in New Issue
Block a user