Improve duplicate detection and repo_move_valid
authorclaudio <claudio@openbsd.org>
Fri, 12 Jul 2024 09:27:32 +0000 (09:27 +0000)
committerclaudio <claudio@openbsd.org>
Fri, 12 Jul 2024 09:27:32 +0000 (09:27 +0000)
commit9236071340bceacb05297bf3b408dd1109f9df97
tree47011f9a5e1d052720b9cc6d7404049dd18a812e
parentdb996e510fa9ca1d20885e30e0b103f3584c6ce9
Improve duplicate detection and repo_move_valid

Only trigger a duplicate error if a valid filepath is revisted. It is
possible that a bad CA references somebody else's files and if that
happens first it would block the valid access.

To make this work, pass the ok flag to filepath_add() and only set the
talmask bit if the file was ok. Since we need to do the duplicate check
before processing the entity introduce filepath_valid() which checks
if the path is in the tree and has its talmask bit set.

In repo_move_valid() handle conflicts more gracefully. When both a valid
and temporary file are present assume that one of the files was never ok
(talmask == 0) and silently remove that file from the filepath tree.

OK tb@
usr.sbin/rpki-client/extern.h
usr.sbin/rpki-client/main.c
usr.sbin/rpki-client/repo.c