From 7f654a6a6fb5e956b996eece36ff95e590a6ad63 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Thu, 12 May 2011 19:17:48 -0400 Subject: Add a ControlPortFileGroupWritable option --- src/or/config.c | 1 + src/or/control.c | 8 ++++++++ src/or/or.h | 2 ++ 3 files changed, 11 insertions(+) (limited to 'src') diff --git a/src/or/config.c b/src/or/config.c index 5eb62291bc..a7ff28f462 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -206,6 +206,7 @@ static config_var_t _option_vars[] = { V(ContactInfo, STRING, NULL), V(ControlListenAddress, LINELIST, NULL), V(ControlPort, PORT, "0"), + V(ControlPortFileGroupReadable,BOOL, "0"), V(ControlPortWriteToFile, FILENAME, NULL), V(ControlSocket, LINELIST, NULL), V(CookieAuthentication, BOOL, "0"), diff --git a/src/or/control.c b/src/or/control.c index 634674233c..384e579f93 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -542,6 +542,14 @@ control_ports_write_to_file(void) log_warn(LD_CONTROL, "Writing %s failed: %s", options->ControlPortWriteToFile, strerror(errno)); } +#ifndef MS_WINDOWS + if (options->ControlPortFileGroupReadable) { + if (chmod(options->ControlPortWriteToFile, 0640)) { + log_warn(LD_FS,"Unable to make %s group-readable.", + options->ControlPortWriteToFile); + } + } +#endif tor_free(joined); SMARTLIST_FOREACH(lines, char *, cp, tor_free(cp)); smartlist_free(lines); diff --git a/src/or/or.h b/src/or/or.h index 412aac9822..a73d98ab74 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -2876,6 +2876,8 @@ typedef struct { /** File where we should write the ControlPort. */ char *ControlPortWriteToFile; + /** Should that file be group-readable? */ + int ControlPortFileGroupReadable; } or_options_t; -- cgit v1.2.3-54-g00ecf