0.2.2 relays crash without geoip files
Found via chutney:
#0 0x00078878 in geoip_note_client_seen (action=GEOIP_CLIENT_NETWORKSTATUS, addr=2130706433, now=1319812719) at geoip.c:439 #1 0x00057cd6 in directory_handle_command (conn=0x21a3d0) at directory.c:2703 #2 0x000590e7 in connection_dir_process_inbuf (conn=0x21a3d0) at directory.c:2162 #3 0x0002deb4 in connection_process_inbuf (conn=0x21a3d0, package_partial=<value temporarily unavailable, due to optimizations>) at connection.c:3363 #4 0x000328ae in connection_handle_read (conn=0x21a3d0) at connection.c:2524 #5 0x000806bf in conn_read_callback (fd=15, event=2, _conn=0x21a3d0) at main.c:514 warning: .o file "/Users/nickm/src/libevent-1.4/.libs/event.o" more recent than executable timestamp #6 0x001a8911 in event_base_loop (base=0x806400, flags=0) at event.c:401 #7 0x0007df52 in do_main_loop () at main.c:1566 #8 0x0007f73b in tor_main (argc=0, argv=0x0) at main.c:2228 #9 0x00002426 in start ()
For some reason, I haven't seen this in master yet.
What shall we do? The easiest option is to make geoip_note_client_seen() return early if geoip_countries is NULL. But perhaps we should go over the whole file to look for other places where we might be saying "smartlist_len(geoip_countries)" without first making sure geoip_countries is set. And perhaps also we should disallow being an authority without a geoip file.