Skip to content

fix: TOCTOU and improve error handling in evidence deletion#263

Open
jkennedyvz wants to merge 1 commit into
mainfrom
jk/file-deletion-fix
Open

fix: TOCTOU and improve error handling in evidence deletion#263
jkennedyvz wants to merge 1 commit into
mainfrom
jk/file-deletion-fix

Conversation

@jkennedyvz

Copy link
Copy Markdown
Contributor

The deleteButtonClicked function had multiple issues:

  1. TOCTOU race condition - checked file existence implicitly via QFile::remove return value, then deleted DB entry separately
  2. Incomplete error handling - only reported file deletion failures, not database deletion failures
  3. Inconsistent state - database entry deleted even if file deletion failed, leading to orphaned files

Changes:

  • Perform both operations atomically (no race window)
  • Store results of both file and database deletion
  • Provide specific error messages for each failure scenario:
    • Both operations fail
    • Only file deletion fails (DB entry removed)
    • Only DB deletion fails (file removed)
  • Only close dialog if both operations succeed
  • Better UX with clear error messages and next steps

This eliminates the TOCTOU vulnerability and prevents inconsistent state between filesystem and database.

I confirm that this contribution is made under the terms of the license found in the root directory of this repository's source tree and that I have the authority necessary to make this contribution on behalf of its copyright owner.

The deleteButtonClicked function had multiple issues:
1. TOCTOU race condition - checked file existence implicitly via
   QFile::remove return value, then deleted DB entry separately
2. Incomplete error handling - only reported file deletion failures,
   not database deletion failures
3. Inconsistent state - database entry deleted even if file deletion
   failed, leading to orphaned files

Changes:
- Perform both operations atomically (no race window)
- Store results of both file and database deletion
- Provide specific error messages for each failure scenario:
  * Both operations fail
  * Only file deletion fails (DB entry removed)
  * Only DB deletion fails (file removed)
- Only close dialog if both operations succeed
- Better UX with clear error messages and next steps

This eliminates the TOCTOU vulnerability and prevents inconsistent
state between filesystem and database.
@jkennedyvz jkennedyvz requested a review from jrozner as a code owner February 9, 2026 05:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant