1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
--- a/keydb.ml
+++ b/keydb.ml
@@ -1172,29 +1172,38 @@ struct
try
if has_hash hash then [] else
let keyid = Fingerprint.keyid_from_key ~short:true key in
- let potential_merges = List.filter ~f:(fun x -> x <> key)
- (get_by_short_keyid keyid)
- in
- plerror 4 "%d potential merges found for keyid %s"
- (List.length potential_merges) (KeyHash.hexify keyid);
- let (deletions,mergedkey) =
- List.fold_left ~init:([],key) potential_merges
- ~f:(fun (updates,key) x ->
- match KeyMerge.merge key x with
- | None -> (updates,key)
- | Some mergedkey ->
- ((x, DeleteKey)::updates,
- mergedkey)
- )
- in
- let addition = (mergedkey,AddKey) in
- let updates = addition::deletions in
- let updates = List.rev updates in
- let updates = List.map updates
- ~f:(fun (key,action) -> (key_to_metadata key,action))
- in
- plerror 4 "%d updates found before filtering" (List.length updates);
- updates
+ let keyid_long = Fingerprint.keyid_to_string ~short:false (Fingerprint.keyid_from_key ~short:false key) in
+
+ (* Blacklist poison key - RT#112669 *)
+ plerror 4 "considering keyid %s" keyid_long;
+ if List.mem keyid_long [
+ "E41ED3A107A7DBC7"; (* 2018-07-16 *)
+ "86CE877469D2EAD9"; (* 2019-01-22 *)
+ "73E287A82CF1B349"; (* 2020-09-18 *)
+ ] then [] else
+ let potential_merges = List.filter ~f:(fun x -> x <> key)
+ (get_by_short_keyid keyid)
+ in
+ plerror 4 "%d potential merges found for keyid %s (%s)"
+ (List.length potential_merges) (KeyHash.hexify keyid) keyid_long;
+ let (deletions,mergedkey) =
+ List.fold_left ~init:([],key) potential_merges
+ ~f:(fun (updates,key) x ->
+ match KeyMerge.merge key x with
+ | None -> (updates,key)
+ | Some mergedkey ->
+ ((x, DeleteKey)::updates,
+ mergedkey)
+ )
+ in
+ let addition = (mergedkey,AddKey) in
+ let updates = addition::deletions in
+ let updates = List.rev updates in
+ let updates = List.map updates
+ ~f:(fun (key,action) -> (key_to_metadata key,action))
+ in
+ plerror 4 "%d updates found before filtering" (List.length updates);
+ updates
with
| Sys.Break | Eventloop.SigAlarm as e -> raise e
| Bdb.DBError s as e ->
|