Browse Source

fix an infinite loop and a memory leak in r9131

svn:r9138
Roger Dingledine 17 years ago
parent
commit
9cd8feb649
1 changed files with 5 additions and 6 deletions
  1. 5 6
      src/or/router.c

+ 5 - 6
src/or/router.c

@@ -864,9 +864,11 @@ router_rebuild_descriptor(int force)
     SMARTLIST_FOREACH(family, char *, name,
      {
        routerinfo_t *member;
-       if (!strcasecmp(name, options->Nickname))
-         member = ri;
-       else
+       if (!strcasecmp(name, options->Nickname)) {
+         /* Don't list ourself in our own family; that's redundant */
+         tor_free(name);
+         continue;
+       } else
          member = router_get_by_nickname(name, 1);
        if (!member) {
          if (!smartlist_string_isin(warned_nonexistent_family, name) &&
@@ -879,9 +881,6 @@ router_rebuild_descriptor(int force)
          }
          smartlist_add(ri->declared_family, name);
          name = NULL;
-       } else if (router_is_me(member)) {
-         /* Don't list ourself in our own family; that's redundant */
-         continue;
        } else {
          char *fp = tor_malloc(HEX_DIGEST_LEN+2);
          fp[0] = '$';