Torrc parser crashing for long ExitPolicy lists

While running tor as a relay and having a long (300 lines) list of ExitPolicy directives in the torrc file I get the following error: Jan 09 19:12:55.541 [warn] router_dump_router_to_string(): Bug: descriptor policy_write_item ran out of room! Jan 09 19:12:55.541 [warn] router_rebuild_descriptor(): Bug: Couldn't generate router descriptor.

And Tor will not start.

Steps to reproduce:

  • Add 200-300 lines of ExitPolicy directives for example:

ExitPolicy reject 217.169.96.0/20:, reject 217.169.112.0/20:, reject 217.170.224.0/20:* ExitPolicy reject 217.171.32.0/20:, reject 217.171.160.0/20:, reject 217.172.0.0/20:* ExitPolicy reject 217.172.192.0/19:, reject 217.174.112.0/20:, reject 217.174.128.0/20:* ...

  • Start tor
  • cat /var/log/tor/log Jan 09 19:12:00.938 [warn] router_dump_router_to_string(): Bug: descriptor policy_write_item ran out of room! Jan 09 19:12:00.938 [warn] router_rebuild_descriptor(): Bug: Couldn't generate router descriptor.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information