• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

IJHack / QtPass / 35597732343
93%

Build:
DEFAULT BRANCH: main
Ran 21 Sep 2026 12:15PM UTC
Jobs 1
Files 114
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

21 Sep 2026 12:07PM UTC coverage: 78.987% (+0.1%) from 78.866%
35597732343

push

github

web-flow
Users dialog: with a signing key, preselect only a list that verifies (#1872)

* Users dialog: with a signing key, preselect only a list that verifies

UsersDialog::loadRecipients() read .gpg-id as it was on disk and ticked
its recipients, and OK writes and signs the selection. With a signing key
that is a confused deputy: someone who can write to the store appends
themselves to the list, cannot re-sign it, and the next Users -> OK by a
key holder signs them in. The rollback refusal from #1869, which sends the
user to that dialog, made the path more likely to be walked.

Pass::recipientsForEditing(dir, passStore, warning) is what the dialog
loads now. Without a signing key: the list as it is, as before. With one:
only a list whose signature verifies is preselected. One that does not
verify preselects nothing and the dialog shows why (saving then writes and
signs a fresh selection). One that verifies but is older than the
generation record is authentic and is preselected, with the reason shown
as a banner so the user reviews who is ticked before saving. The store the
folder belongs to comes from the dialog, not the backend: a profile being
set up is not the active store.

Tests: a bytes-bound verifying fake gpg (VALIDSIG only when stdin equals
the signed copy); an appended member is not ticked and the banner says the
list does not verify, the untouched list is ticked with no banner, without
a signing key the tampered list is taken as before; a verified older list
is ticked with the rollback banner.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JuQsrHonihp1nARE7bzstc

* Users dialog: preselect only what accept() accepts, the authentic rollback excepted

The external review of the first commit: recipientsForEditing() treated
every accept() failure as "warn and preselect anyway", so a verified list
written for another folder (the relocation #1869 closed), a malformed one,
or one without a record to... (continued)

80 of 82 new or added lines in 5 files covered. (97.56%)

10 existing lines in 2 files now uncovered.

7281 of 9218 relevant lines covered (78.99%)

76.33 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
86.25
0.75% src/pass.cpp

Coverage Regressions

Lines Coverage ∆ File
9
0.0
0.0% src/qrc_qmake_qmake_qm_files.cpp
1
86.42
-1.23% src/nativegrep.cpp
Jobs
ID Job ID Ran Files Coverage
1 35597732343.1 21 Sep 2026 12:15PM UTC 114
78.99
GitHub Action Run
Source Files on build 35597732343
  • Tree
  • List 114
  • Changed 8
  • Source Changed 7
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35597732343
  • dfe093c2 on github
  • Prev Build on main (#35590881210)
  • Next Build on main (#35599801048)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc