ソースを参照

Merge remote-tracking branch 'teor/ticket24001'

Nick Mathewson 6 年 前
コミット
d53f779853
2 ファイル変更11 行追加0 行削除
  1. 4 0
      changes/ticket24001
  2. 7 0
      src/or/nodelist.c

+ 4 - 0
changes/ticket24001

@@ -0,0 +1,4 @@
+  o Minor features (code correctness, descriptors):
+    - Check that microdesc ed25519 ids are non-zero in node_get_ed25519_id(),
+      before returning them.
+      Implements 24001, patch by "aruna1234".

+ 7 - 0
src/or/nodelist.c

@@ -908,9 +908,12 @@ node_get_ed25519_id(const node_t *node)
 {
   const ed25519_public_key_t *ri_pk = NULL;
   const ed25519_public_key_t *md_pk = NULL;
+
   if (node->ri) {
     if (node->ri->cache_info.signing_key_cert) {
       ri_pk = &node->ri->cache_info.signing_key_cert->signing_key;
+      /* Checking whether routerinfo ed25519 is all zero.
+       * Our descriptor parser should make sure this never happens. */
       if (BUG(ed25519_public_key_is_zero(ri_pk)))
         ri_pk = NULL;
     }
@@ -919,6 +922,10 @@ node_get_ed25519_id(const node_t *node)
   if (node->md) {
     if (node->md->ed25519_identity_pkey) {
       md_pk = node->md->ed25519_identity_pkey;
+      /* Checking whether microdesc ed25519 is all zero.
+       * Our descriptor parser should make sure this never happens. */
+      if (BUG(ed25519_public_key_is_zero(md_pk)))
+        md_pk = NULL;
     }
   }