ソースを参照

prop224: Be more careful to not overwrite descriptors in HUP.

George Kadianakis 6 年 前
コミット
409ecbec52
1 ファイル変更11 行追加1 行削除
  1. 11 1
      src/or/hs_service.c

+ 11 - 1
src/or/hs_service.c

@@ -964,7 +964,8 @@ service_descriptor_new(void)
   return sdesc;
 }
 
-/* Move descriptor(s) from the src service to the dst service. */
+/* Move descriptor(s) from the src service to the dst service. We do this
+ * during SIGHUP when we re-create our hidden services. */
 static void
 move_descriptors(hs_service_t *src, hs_service_t *dst)
 {
@@ -972,10 +973,19 @@ move_descriptors(hs_service_t *src, hs_service_t *dst)
   tor_assert(dst);
 
   if (src->desc_current) {
+    /* Nothing should be there, but clean it up just in case */
+    if (BUG(dst->desc_current)) {
+      service_descriptor_free(dst->desc_current);
+    }
     dst->desc_current = src->desc_current;
     src->desc_current = NULL;
   }
+
   if (src->desc_next) {
+    /* Nothing should be there, but clean it up just in case */
+    if (BUG(dst->desc_next)) {
+      service_descriptor_free(dst->desc_next);
+    }
     dst->desc_next = src->desc_next;
     src->desc_next = NULL;
   }