|
@@ -259,7 +259,7 @@ static config_var_t option_vars_[] = {
|
|
|
V(BridgeRelay, BOOL, "0"),
|
|
|
V(BridgeDistribution, STRING, NULL),
|
|
|
VAR("CacheDirectory", FILENAME, CacheDirectory_option, NULL),
|
|
|
- V(CacheDirectoryGroupReadable, BOOL, "0"),
|
|
|
+ V(CacheDirectoryGroupReadable, AUTOBOOL, "auto"),
|
|
|
V(CellStatistics, BOOL, "0"),
|
|
|
V(PaddingStatistics, BOOL, "1"),
|
|
|
V(LearnCircuitBuildTimeout, BOOL, "1"),
|
|
@@ -1516,9 +1516,26 @@ options_act_reversible(const or_options_t *old_options, char **msg)
|
|
|
msg) < 0) {
|
|
|
goto done;
|
|
|
}
|
|
|
+
|
|
|
+ /* We need to handle the group-readable flag for the cache directory
|
|
|
+ * specially, since the directory defaults to being the same as the
|
|
|
+ * DataDirectory. */
|
|
|
+ int cache_dir_group_readable;
|
|
|
+ if (options->CacheDirectoryGroupReadable != -1) {
|
|
|
+ /* If the user specified a value, use their setting */
|
|
|
+ cache_dir_group_readable = options->CacheDirectoryGroupReadable;
|
|
|
+ } else if (!strcmp(options->CacheDirectory, options->DataDirectory)) {
|
|
|
+ /* If the user left the value as "auto", and the cache is the same as the
|
|
|
+ * datadirectory, use the datadirectory setting.
|
|
|
+ */
|
|
|
+ cache_dir_group_readable = options->DataDirectoryGroupReadable;
|
|
|
+ } else {
|
|
|
+ /* Otherwise, "auto" means "not group readable". */
|
|
|
+ cache_dir_group_readable = 0;
|
|
|
+ }
|
|
|
if (check_and_create_data_directory(running_tor /* create */,
|
|
|
options->CacheDirectory,
|
|
|
- options->CacheDirectoryGroupReadable,
|
|
|
+ cache_dir_group_readable,
|
|
|
options->User,
|
|
|
msg) < 0) {
|
|
|
goto done;
|