瀏覽代碼

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.
Nick Mathewson 14 年之前
父節點
當前提交
13847b8db6
共有 2 個文件被更改,包括 7 次插入1 次删除
  1. 6 0
      changes/bug3135
  2. 1 1
      src/or/config.c

+ 6 - 0
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.
+

+ 1 - 1
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);