0.1.1: reject entry names that the list would hide #23

Open
opened 2026-10-13 21:56:15 +00:00 by claude-bot · 0 comments
Collaborator

Found in the 0.1.0 pre-launch audit (correctness, non-blocking). Fix for 0.1.1.

Store::entry_path (passcore/src/lib.rs:213) accepts any name made only of normal path components. That includes .foo, work/.x and foo/; the last one becomes foo/.gpg. The editor doesn't check names either.

What happens:

  • The entry is encrypted, committed and pushed.
  • entries() (lib.rs:140) skips every name that starts with ., so the entry never shows in the list. It can't be opened, edited or deleted on the phone.

The data is intact in the repo and on the remote.

Fix: entry_path rejects any component that starts with . as well as a trailing /, and the editor shows the error. Add tests in passcore, plus one in tst_EntryEditor.

Trunk (lib.rs).

Found in the 0.1.0 pre-launch audit (correctness, non-blocking). Fix for 0.1.1. `Store::entry_path` (`passcore/src/lib.rs:213`) accepts any name made only of normal path components. That includes `.foo`, `work/.x` and `foo/`; the last one becomes `foo/.gpg`. The editor doesn't check names either. What happens: - The entry is encrypted, committed and pushed. - `entries()` (`lib.rs:140`) skips every name that starts with `.`, so the entry never shows in the list. It can't be opened, edited or deleted on the phone. The data is intact in the repo and on the remote. Fix: `entry_path` rejects any component that starts with `.` as well as a trailing `/`, and the editor shows the error. Add tests in passcore, plus one in tst_EntryEditor. Trunk (`lib.rs`).
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
schaefera/TouchPass#23
No description provided.