瀏覽代碼

you can't strcasecmp on 20-byte digests
what if they contain nuls?
(worse, what if they *don't* contain nuls? ;)


svn:r15149

Roger Dingledine 17 年之前
父節點
當前提交
6bd006bdb8
共有 1 個文件被更改,包括 4 次插入4 次删除
  1. 4 4
      src/or/rendservice.c

+ 4 - 4
src/or/rendservice.c

@@ -1026,8 +1026,8 @@ find_intro_circuit(rend_intro_point_t *intro, const char *pk_digest,
   tor_assert(intro);
   while ((circ = circuit_get_next_by_pk_and_purpose(circ,pk_digest,
                                                   CIRCUIT_PURPOSE_S_INTRO))) {
-    if (!strcasecmp(circ->build_state->chosen_exit->identity_digest,
-                    intro->extend_info->identity_digest) &&
+    if (!memcmp(circ->build_state->chosen_exit->identity_digest,
+                intro->extend_info->identity_digest, DIGEST_LEN) &&
         circ->rend_desc_version == desc_version) {
       return circ;
     }
@@ -1036,8 +1036,8 @@ find_intro_circuit(rend_intro_point_t *intro, const char *pk_digest,
   circ = NULL;
   while ((circ = circuit_get_next_by_pk_and_purpose(circ,pk_digest,
                                         CIRCUIT_PURPOSE_S_ESTABLISH_INTRO))) {
-    if (!strcasecmp(circ->build_state->chosen_exit->identity_digest,
-                    intro->extend_info->identity_digest) &&
+    if (!memcmp(circ->build_state->chosen_exit->identity_digest,
+                intro->extend_info->identity_digest, DIGEST_LEN) &&
         circ->rend_desc_version == desc_version) {
       return circ;
     }