Просмотр исходного кода

add copy of MyFamily element to the descriptor, not the element itself

If we add the element itself, we will later free it when we free the
descriptor, and the next time we go to look at MyFamily, things will
go badly.

Fixes the rest of bug 22368; bugfix on 0.3.1.1-alpha.
Roger Dingledine 7 лет назад
Родитель
Сommit
d22d565331
2 измененных файлов с 7 добавлено и 1 удалено
  1. 6 0
      changes/bug22368
  2. 1 1
      src/or/router.c

+ 6 - 0
changes/bug22368

@@ -0,0 +1,6 @@
+  o Major bugfixes:
+    - Relays that set MyFamily no longer free the elements of
+      options->MyFamily while making their descriptor. They tried to
+      access the freed elements, and then double-free them, when making
+      the next descriptor or when changing the config. Fixes bug 22368;
+      bugfix on 0.3.1.1-alpha.

+ 1 - 1
src/or/router.c

@@ -2308,7 +2308,7 @@ router_build_fresh_descriptor(routerinfo_t **r, extrainfo_t **e)
            smartlist_add_strdup(warned_nonexistent_family, name);
          }
          if (is_legal) {
-           smartlist_add(ri->declared_family, name);
+           smartlist_add_strdup(ri->declared_family, name);
            name = NULL;
          }
        } else if (router_digest_is_me(member->identity)) {