Pierre Warnier
fbb4f496a6
security: address Copilot review on PR #36 , add concurrency + compat tests
...
Copilot findings (PR #36 ):
- parsers: use trim_start() for blank/comment detection, parse
untrimmed line to preserve GECOS whitespace
- pam: newline after password prompt is best-effort (let _ =)
New tests (#37 ):
- test_concurrent_lock_operations: 4 threads racing lock/unlock
- test_gnu_compat_status_output: compare -S output with GNU passwd
- test_gnu_compat_lock_unlock: verify lock/unlock matches GNU behavior
147 tests, zero clippy warnings.
2026-03-23 16:07:08 +01:00
..
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00
2026-03-23 16:07:08 +01:00