[tor-bugs] #1956 [Tor Client]: networkstatus_check_consensus_signature() prints wrong stats

Tor Bug Tracker & Wiki torproject-admin at torproject.org
Mon Sep 20 06:02:52 UTC 2010


#1956: networkstatus_check_consensus_signature() prints wrong stats
------------------------+---------------------------------------------------
 Reporter:  arma        |       Owner:                     
     Type:  defect      |      Status:  new                
 Priority:  normal      |   Milestone:                     
Component:  Tor Client  |     Version:  Tor: 0.2.2.15-alpha
 Keywords:              |      Parent:                     
------------------------+---------------------------------------------------
 {{{
 Sep 20 01:16:33.215 [info] A consensus needs 5 good signatures from
 recognized authorities for us to accept it. This one has 8. 2 of the
 authorities we know didn't sign it. It has 2 signatures from authorities
 we don't recognize.
 }}}

 Wait, it has 8 signatures, and also 2 of the authorities we know didn't
 sign it? It turns out that second statement is false.

 I instrumented my Tor to explain when it bumps various counters in this
 function, and got this output:

 {{{
 Sep 20 01:42:33.344 [notice] Bootstrapped 25%: Loading networkstatus
 consensus.
 Sep 20 01:42:34.337 [notice] looking at new voter tor26:
 14C131DFC5C6F93646BE72FA1401C02A8DF2E8B4
 Sep 20 01:42:34.337 [notice] looking at new sig
 14C131DFC5C6F93646BE72FA1401C02A8DF2E8B4: 0 0 1
 Sep 20 01:42:34.338 [notice] ++good_here
 Sep 20 01:42:34.338 [notice] ++n_good
 Sep 20 01:42:34.338 [notice] looking at new voter ides:
 27B6B5996C426270A5C95488AA5BCEB6BCC86956
 Sep 20 01:42:34.339 [notice] looking at new sig
 27B6B5996C426270A5C95488AA5BCEB6BCC86956: 0 0 1
 Sep 20 01:42:34.339 [notice] ++good_here
 Sep 20 01:42:34.339 [notice] ++n_good
 Sep 20 01:42:34.340 [notice] looking at new voter maatuska:
 49015F787433103580E3B66A1707A00E60F2D15B
 Sep 20 01:42:34.342 [notice] looking at new sig
 49015F787433103580E3B66A1707A00E60F2D15B: 0 0 1
 Sep 20 01:42:34.343 [notice] ++good_here
 Sep 20 01:42:34.343 [notice] ++n_good
 Sep 20 01:42:34.343 [notice] looking at new voter dannenberg:
 585769C78764D58426B8B52B6651A5A71137189A
 Sep 20 01:42:34.343 [notice] looking at new sig
 585769C78764D58426B8B52B6651A5A71137189A: 0 0 1
 Sep 20 01:42:34.347 [notice] ++good_here
 Sep 20 01:42:34.347 [notice] ++n_good
 Sep 20 01:42:34.347 [notice] looking at new voter urras:
 80550987E1D626E3EBA5E5E75A458DE0626D088C
 Sep 20 01:42:34.347 [notice] looking at new sig
 80550987E1D626E3EBA5E5E75A458DE0626D088C: 0 0 1
 Sep 20 01:42:34.350 [notice] ++good_here
 Sep 20 01:42:34.350 [notice] ++n_good
 Sep 20 01:42:34.351 [notice] looking at new voter gabelmoo-legacy:
 81349FC1F2DBA2C2C11B45CB9706637D480AB913
 Sep 20 01:42:34.351 [notice] looking at new sig
 81349FC1F2DBA2C2C11B45CB9706637D480AB913: 0 0 1
 Sep 20 01:42:34.351 [notice] ++n_unknown
 Sep 20 01:42:34.351 [notice] ++n_no_signature
 Sep 20 01:42:34.351 [notice] looking at new voter moria1:
 D586D18309DED4CD6D57C18FDB97EFA96D330566
 Sep 20 01:42:34.352 [notice] looking at new sig
 D586D18309DED4CD6D57C18FDB97EFA96D330566: 0 0 1
 Sep 20 01:42:34.356 [notice] ++good_here
 Sep 20 01:42:34.356 [notice] ++n_good
 Sep 20 01:42:34.356 [notice] looking at new voter moria1-legacy:
 E2A2AF570166665D738736D0DD58169CC61D8A8B
 Sep 20 01:42:34.356 [notice] looking at new sig
 E2A2AF570166665D738736D0DD58169CC61D8A8B: 0 0 1
 Sep 20 01:42:34.356 [notice] ++n_unknown
 Sep 20 01:42:34.357 [notice] ++n_no_signature
 Sep 20 01:42:34.357 [notice] looking at new voter dizum:
 E8A9C45EDE6D711294FADF8E7951F4DE6CA56B58
 Sep 20 01:42:34.357 [notice] looking at new sig
 E8A9C45EDE6D711294FADF8E7951F4DE6CA56B58: 0 0 1
 Sep 20 01:42:34.358 [notice] ++good_here
 Sep 20 01:42:34.358 [notice] ++n_good
 Sep 20 01:42:34.358 [notice] looking at new voter gabelmoo:
 ED03BB616EB2F60BEC80151114BB25CEF515B226
 Sep 20 01:42:34.358 [notice] looking at new sig
 ED03BB616EB2F60BEC80151114BB25CEF515B226: 0 0 1
 Sep 20 01:42:34.359 [notice] ++good_here
 Sep 20 01:42:34.359 [notice] ++n_good
 Sep 20 01:42:34.360 [warn] Consensus includes unrecognized authority
 'gabelmoo-legacy' at 80.190.246.100:8180 (contact n/a; identity
 81349FC1F2DBA2C2C11B45CB9706637D480AB913)
 Sep 20 01:42:34.360 [warn] Consensus includes unrecognized authority
 'moria1-legacy' at 128.31.0.34:9131 (contact n/a; identity
 E2A2AF570166665D738736D0DD58169CC61D8A8B)
 Sep 20 01:42:34.360 [warn] A consensus needs 5 good signatures from
 recognized authorities for us to accept it. This one has 8. 2 of the
 authorities we know didn't sign it. It has 2 signatures from authorities
 we don't recognize.
 Sep 20 01:42:34.360 [notice] n_good 8, n_v3_authorities 8, n_required 5,
 n_missing_key 0
 }}}

 So it turns out we're bumping n_no_signature when we're bumping n_unknown.
 That happens because we end the
 {{{
 SMARTLIST_FOREACH_BEGIN(consensus->voters, networkstatus_voter_info_t *,
 }}}
 loop without having set good_here, bad_here, etc, so it falls to the
 bottom of the if statements:
 {{{
     } else
       ++n_no_signature;
 }}}

 Something is not right, here. Perhaps it is as simple as "we are mis-
 describing what n_no_signature means"?

-- 
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/1956>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list