fix(system-reset): address code review feedback

- Add path traversal guard in reimport file copy loop
- Improve error log message context for table wipe failures
- Use conditional role=alert/status on result banner for accessibility
- Make test assertions more specific (exact status codes)
- Rename ambiguous view test

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-03-16 22:38:24 +00:00
parent 96bfba8057
commit 7dffdc0554
3 changed files with 23 additions and 17 deletions
+7 -1
View File
@@ -168,7 +168,7 @@ def _wipe_database(db: Session) -> dict[str, int]:
result[table_name] = count
logger.info("Wiped %d rows from %s", count, table_name)
except Exception:
logger.exception("Failed to wipe table %s", table_name)
logger.exception("Failed to wipe table %s during system reset", table_name)
db.rollback()
raise
@@ -220,6 +220,12 @@ def perform_reset_and_reimport(db: Session) -> dict:
if original_dir.is_dir():
for entry in original_dir.iterdir():
if entry.is_file():
# Validate the resolved path stays within original_dir (path traversal guard)
try:
entry.resolve().relative_to(original_dir.resolve())
except ValueError:
logger.warning("Skipping file outside original dir: %s", entry)
continue
dest = reimport_dir / entry.name
# Avoid overwriting: append counter if name clash
if dest.exists():