bug in onion expire time, for 3 hop onions?

Nick Mathewson nickm at alum.mit.edu
Fri Jul 19 04:03:29 UTC 2002

On Thu, 2002-07-18 at 19:06, Roger Dingledine wrote:

Hi, Roger!  I'm not too deep in your code, but I've debugged similar
stuff in Minion, and I think I may be able to suggest a good direction

> Now that I've got more than 3 onion routers up, and my coinweight is
> non-zero, sometimes I get onions which use 3 hops. Some of those onions
> have invalid expire times:
> (gdb) print (time_t)((onion_layer_t *)circ->onion)->expire
> $2 = -1241615826
> That's *really* invalid, not just off by a few seconds. Mat, do you
> have any ideas on this one? I imagine it's somewhere in onion.c, which
> I haven't really looked at since I grabbed it from your code.

This is happening in process_onion, right?

My first guess is that this isn't an expiration problem.  It looks more
like a problem decrypting the onion; keep in mind that this is the first
operation after you decrypt the onion.  Are the other fields all

By any chance, is >3 hops the point at which decrypt_onion starts using
3DES in addition to RSA?  

(A unit test to make sure that decrypt_onion inverts encrypt_onion for
long onions might be in order.) :)


More information about the tor-dev mailing list