浏览代码

Check whether ei is non-NULL before altering it.

This fixes a crash bug if we fail to generate an extrainfo
descriptor.

Fixes bug 8208; bugfix on 0.2.3.16-alpha.
Nick Mathewson 12 年之前
父节点
当前提交
e3578d52e4
共有 2 个文件被更改,包括 10 次插入2 次删除
  1. 4 0
      changes/bug8208
  2. 6 2
      src/or/router.c

+ 4 - 0
changes/bug8208

@@ -0,0 +1,4 @@
+  o Minor bugfixes:
+    - Avoid a crash if we fail to generate an extrinfo descriptor.
+      Fixes bug 8208; bugfix on 0.2.3.16-alpha. Found by Coverity;
+      this is CID 718634.

+ 6 - 2
src/or/router.c

@@ -1702,9 +1702,13 @@ router_rebuild_descriptor(int force)
        anyway, since they don't have a DirPort, and always connect to the
        anyway, since they don't have a DirPort, and always connect to the
        bridge authority anonymously.  But just in case they somehow think of
        bridge authority anonymously.  But just in case they somehow think of
        sending them on an unencrypted connection, don't allow them to try. */
        sending them on an unencrypted connection, don't allow them to try. */
-    ri->cache_info.send_unencrypted = ei->cache_info.send_unencrypted = 0;
+    ri->cache_info.send_unencrypted = 0;
+    if (ei)
+      ei->cache_info.send_unencrypted = 0
   } else {
   } else {
-    ri->cache_info.send_unencrypted = ei->cache_info.send_unencrypted = 1;
+    ri->cache_info.send_unencrypted = 1;
+    if (ei)
+      ei->cache_info.send_unencrypted = 1;
   }
   }
 
 
   router_get_router_hash(ri->cache_info.signed_descriptor_body,
   router_get_router_hash(ri->cache_info.signed_descriptor_body,