[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [tor-bugs] #18320 [Core Tor/Tor]: Clear old entries from the key-pinning journal file



#18320: Clear old entries from the key-pinning journal file
-------------------------------------------------+-------------------------
 Reporter:  teor                                 |          Owner:  andrea
     Type:  defect                               |         Status:
 Priority:  Medium                               |  needs_revision
Component:  Core Tor/Tor                         |      Milestone:  Tor:
 Severity:  Normal                               |  0.2.9.x-final
 Keywords:  tor-dos, TorCoreTeam201606, review-  |        Version:
  group-3                                        |     Resolution:
Parent ID:  #17293                               |  Actual Points:
 Reviewer:  dgoulet                              |         Points:  3
                                                 |        Sponsor:
                                                 |  SponsorU-can
-------------------------------------------------+-------------------------
Changes (by dgoulet):

 * status:  needs_review => needs_revision
 * reviewer:   => dgoulet


Comment:

 General comment.

 I'm not so cheerful about the keypin code directly using HT_* instead of
 the tested and robust interface we have that are `digestmap` and
 `digest256map` _especially_ when we use RSA and ed25519 digest as keys.
 Maybe there is a reason? I don't see one for now nor see one in the
 comment. So I understand why this patch is using the HT_* interface but it
 adds quite a bit of complexity for review... Re-implementing the
 add/remove/iteration is really not ideal as we duplicate lots of things.

 Why the double linked list? Isn't a `smartlist_t` ordered and when
 removing we can make sure to keep it with `smartlist_del_keeporder()`?
 This would simplify things since implementing a double linked list in this
 file is not ideal I would say.

 Some code comment:

 DG1: `keypin_add_or_replace_entry_in_map()` can return -2 I believe but
 it's not documented.

 DG2: This `if(pruner)` is not useful there: `if (pruner)
 keypin_free_pruner(pruner);`

 DG3: In `keypin_prune_journal()`, the pruned journal is written to disk
 only if `r == 0` that is we parsed it successfully. However, on error the
 `log_info(...)` indicating that we've pruned the journal is given. Maybe
 if `r` is an error, we should `goto err`? (might be confusing with
 `strerror(errno)` though).

 DG4: `keypin_add_line_to_pruner()`, I think `len` should be `size_t` here.

 Ok, done for now.

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/18320#comment:20>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
_______________________________________________
tor-bugs mailing list
tor-bugs@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs