aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2014-05-22 19:56:56 -0400
committerNick Mathewson <nickm@torproject.org>2014-05-22 19:56:56 -0400
commitffc1fde01fb4fc752aa54de0282cf027bdb738cf (patch)
tree3864849d8cab337f95824ee4b43492d6fc8c2f9c
parent1356ef1176099bf56d047fbdc817a99fc1ed76ea (diff)
downloadtor-ffc1fde01fb4fc752aa54de0282cf027bdb738cf.tar
tor-ffc1fde01fb4fc752aa54de0282cf027bdb738cf.tar.gz
sandbox: allow access to cookie files, approved-routers
fixes part of 12064
-rw-r--r--src/or/config.c10
-rwxr-xr-xsrc/or/control.c9
-rw-r--r--src/or/control.h1
-rw-r--r--src/or/main.c11
4 files changed, 26 insertions, 5 deletions
diff --git a/src/or/config.c b/src/or/config.c
index 0f7b1d2a2..f0b559da2 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -3750,6 +3750,16 @@ options_transition_allowed(const or_options_t *old,
" while Sandbox is active");
return -1;
}
+ if (! opt_streq(old->CookieAuthFile, new_val->CookieAuthFile)) {
+ *msg = tor_strdup("Can't change CookieAuthFile while Sandbox is active");
+ return -1;
+ }
+ if (! opt_streq(old->ExtORPortCookieAuthFile,
+ new_val->ExtORPortCookieAuthFile)) {
+ *msg = tor_strdup("Can't change ExtORPortCookieAuthFile"
+ " while Sandbox is active");
+ return -1;
+ }
}
return 0;
diff --git a/src/or/control.c b/src/or/control.c
index 2865d7832..21504e685 100755
--- a/src/or/control.c
+++ b/src/or/control.c
@@ -160,7 +160,6 @@ static int write_stream_target_to_buf(entry_connection_t *conn, char *buf,
size_t len);
static void orconn_target_get_name(char *buf, size_t len,
or_connection_t *conn);
-static char *get_cookie_file(void);
/** Given a control event code for a message event, return the corresponding
* log severity. */
@@ -2944,7 +2943,7 @@ handle_control_protocolinfo(control_connection_t *conn, uint32_t len,
} else {
const or_options_t *options = get_options();
int cookies = options->CookieAuthentication;
- char *cfile = get_cookie_file();
+ char *cfile = get_controller_cookie_file_name();
char *abs_cfile;
char *esc_cfile;
char *methods;
@@ -4639,8 +4638,8 @@ control_event_conf_changed(const smartlist_t *elements)
/** Helper: Return a newly allocated string containing a path to the
* file where we store our authentication cookie. */
-static char *
-get_cookie_file(void)
+char *
+get_controller_cookie_file_name(void)
{
const or_options_t *options = get_options();
if (options->CookieAuthFile && strlen(options->CookieAuthFile)) {
@@ -4664,7 +4663,7 @@ init_control_cookie_authentication(int enabled)
return 0;
}
- fname = get_cookie_file();
+ fname = get_controller_cookie_file_name();
retval = init_cookie_authentication(fname, "", /* no header */
AUTHENTICATION_COOKIE_LEN,
&authentication_cookie,
diff --git a/src/or/control.h b/src/or/control.h
index 988c171d7..68a6c244d 100644
--- a/src/or/control.h
+++ b/src/or/control.h
@@ -85,6 +85,7 @@ int control_event_buildtimeout_set(buildtimeout_set_event_t type,
int control_event_signal(uintptr_t signal);
int init_control_cookie_authentication(int enabled);
+char *get_controller_cookie_file_name(void);
smartlist_t *decode_hashed_passwords(config_line_t *passwords);
void disable_control_logging(void);
void enable_control_logging(void);
diff --git a/src/or/main.c b/src/or/main.c
index 8e241d407..ba462dcc4 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -2838,6 +2838,16 @@ sandbox_init_filter(void)
smartlist_free(logfiles);
}
+ {
+ char *fname;
+ if ((fname = get_controller_cookie_file_name())) {
+ sandbox_cfg_allow_open_filename(&cfg, fname);
+ }
+ if ((fname = get_ext_or_auth_cookie_file_name())) {
+ sandbox_cfg_allow_open_filename(&cfg, fname);
+ }
+ }
+
// orport
if (server_mode(get_options())) {
sandbox_cfg_allow_open_filename_array(&cfg,
@@ -2862,6 +2872,7 @@ sandbox_init_filter(void)
get_datadir_fname2("stats", "buffer-stats.tmp"),
get_datadir_fname2("stats", "conn-stats"),
get_datadir_fname2("stats", "conn-stats.tmp"),
+ get_datadir_fname("approved-routers"),
get_datadir_fname("fingerprint"),
get_datadir_fname("fingerprint.tmp"),
get_datadir_fname("hashed-fingerprint"),