diff options
author | Nick Mathewson <nickm@torproject.org> | 2011-08-17 11:22:16 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2011-08-17 11:22:16 -0400 |
commit | d79d648edcc19d1f11758016108fdbb57c80b4d0 (patch) | |
tree | 495884876940b1683e9daa1a474cc72c2bdbab99 | |
parent | 03f6ee8c5f270497b4990b98bc3d23ffea6c75a9 (diff) | |
download | tor-d79d648edcc19d1f11758016108fdbb57c80b4d0.tar.gz tor-d79d648edcc19d1f11758016108fdbb57c80b4d0.zip |
Don't write ControlPorts to disk till after we setuid and make datadir
Fix for bug 3747; bugfix on 0.2.2.26-beta.
-rw-r--r-- | changes/bug3747 | 6 | ||||
-rw-r--r-- | src/or/config.c | 3 | ||||
-rw-r--r-- | src/or/connection.c | 3 |
3 files changed, 9 insertions, 3 deletions
diff --git a/changes/bug3747 b/changes/bug3747 new file mode 100644 index 0000000000..052dab1bd0 --- /dev/null +++ b/changes/bug3747 @@ -0,0 +1,6 @@ + o Major bugfixes: + - Write control ports to disk only after switching UID and + creating the data directory. This way, we don't fail when + starting up with a nonexistant DataDirectory and a + ControlPortWriteToFile setting based on that directory. Fixes + bug 3747; bugfix on Tor 0.2.2.26-beta.
\ No newline at end of file diff --git a/src/or/config.c b/src/or/config.c index e0ecab2d41..7202ea254c 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -1034,6 +1034,9 @@ options_act_reversible(or_options_t *old_options, char **msg) /* No need to roll back, since you can't change the value. */ } + /* Write control ports to disk as appropriate */ + control_ports_write_to_file(); + if (directory_caches_v2_dir_info(options)) { size_t len = strlen(options->DataDirectory)+32; char *fn = tor_malloc(len); diff --git a/src/or/connection.c b/src/or/connection.c index c791309d68..2049f4240c 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -1061,9 +1061,6 @@ connection_create_listener(const struct sockaddr *listensockaddr, "%s listening on port %u.", conn_type_to_string(type), gotPort); - if (type == CONN_TYPE_CONTROL_LISTENER) - control_ports_write_to_file(); - conn->state = LISTENER_STATE_READY; if (start_reading) { connection_start_reading(conn); |