aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2011-05-11 22:05:41 -0400
committerNick Mathewson <nickm@torproject.org>2011-05-11 22:05:41 -0400
commit13847b8db6b676c4f2951a4195758f395b7551a8 (patch)
tree981c40261f0e943f5cb6f3404284bf9cf8a7270d
parente7b10e5ecfdf3ede4123f921c1d2419268235176 (diff)
downloadtor-13847b8db6b676c4f2951a4195758f395b7551a8.tar.gz
tor-13847b8db6b676c4f2951a4195758f395b7551a8.zip
Fix crash when read_file_to_string() fails in SAVECONF
The new behavior is to try to rename the old file if there is one there that we can't read. In all likelihood, that will fail too, but at least we tried, and at least it won't crash.
-rw-r--r--changes/bug31356
-rw-r--r--src/or/config.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/changes/bug3135 b/changes/bug3135
new file mode 100644
index 0000000000..d761123480
--- /dev/null
+++ b/changes/bug3135
@@ -0,0 +1,6 @@
+ o Minor bugfixes
+ - Do not crash when our configuration file becomes unreadable
+ (usually due to a permissions change) between when we start
+ up and when a controller calls SAVECONF. Fixes bug 3135;
+ bugfix on 0.0.9pre6.
+
diff --git a/src/or/config.c b/src/or/config.c
index 9cd8149ce8..fbfa771ed3 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -4625,7 +4625,7 @@ write_configuration_file(const char *fname, or_options_t *options)
switch (file_status(fname)) {
case FN_FILE:
old_val = read_file_to_str(fname, 0, NULL);
- if (strcmpstart(old_val, GENERATED_FILE_PREFIX)) {
+ if (!old_val || strcmpstart(old_val, GENERATED_FILE_PREFIX)) {
rename_old = 1;
}
tor_free(old_val);