Prechádzať zdrojové kódy

Merge commit 'origin/maint-0.2.1'

Nick Mathewson 15 rokov pred
rodič
commit
e0dc2e907e
3 zmenil súbory, kde vykonal 7 pridanie a 4 odobranie
  1. 2 0
      ChangeLog
  2. 4 3
      src/or/dirserv.c
  3. 1 1
      src/or/router.c

+ 2 - 0
ChangeLog

@@ -67,6 +67,8 @@ Changes in version 0.2.1.20 - 2009-??-??
 
   o Minor bugfixes:
     - Fix a signed/unsigned compile warning in 0.2.1.19.
+    - Fix possible segmentation fault on directory authorities. Bugfix on
+      0.2.1.14-rc.
 
 
 Changes in version 0.2.1.19 - 2009-07-28

+ 4 - 3
src/or/dirserv.c

@@ -652,8 +652,8 @@ dirserv_add_multiple_descriptors(const char *desc, uint8_t purpose,
 
 /** Examine the parsed server descriptor in <b>ri</b> and maybe insert it into
  * the list of server descriptors. Set *<b>msg</b> to a message that should be
- * passed back to the origin of this descriptor. Use <b>source</b> to produce
- * better log messages.
+ * passed back to the origin of this descriptor, or NULL if there is no such
+ * message. Use <b>source</b> to produce better log messages.
  *
  * Return the status of the operation
  *
@@ -667,6 +667,7 @@ dirserv_add_descriptor(routerinfo_t *ri, const char **msg, const char *source)
   routerinfo_t *ri_old;
   char *desc, *nickname;
   size_t desclen = 0;
+  *msg = NULL;
 
   /* If it's too big, refuse it now. Otherwise we'll cache it all over the
    * network and it'll clog everything up. */
@@ -718,7 +719,7 @@ dirserv_add_descriptor(routerinfo_t *ri, const char **msg, const char *source)
       control_event_or_authdir_new_descriptor("REJECTED", desc, desclen, *msg);
     log_info(LD_DIRSERV,
              "Did not add descriptor from '%s' (source: %s): %s.",
-             nickname, source, *msg);
+             nickname, source, *msg ? *msg : "(no message)");
   } else {
     smartlist_t *changed;
     control_event_or_authdir_new_descriptor("ACCEPTED", desc, desclen, *msg);

+ 1 - 1
src/or/router.c

@@ -546,7 +546,7 @@ init_keys(void)
   /* Must be called after keys are initialized. */
   mydesc = router_get_my_descriptor();
   if (authdir_mode(options)) {
-    const char *m;
+    const char *m = NULL;
     routerinfo_t *ri;
     /* We need to add our own fingerprint so it gets recognized. */
     if (dirserv_add_own_fingerprint(options->Nickname, get_identity_key())) {