Commit 71862ed7 authored by Nick Mathewson's avatar Nick Mathewson 🐘
Browse files

Fix bug in verifying directory signatures with short digests

If we got a signed digest that was shorter than the required digest
length, but longer than 20 bytes, we would accept it as long
enough.... and then immediately fail when we want to check it.

Fixes bug 2409; bug in 0.2.2.20-alpha; found by piebeer.
parent 7a446e67
Loading
Loading
Loading
Loading

changes/bug2409

0 → 100644
+4 −0
Changes for changes/bug2409: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
  o Minor bugfixes
    - Resolve a bug in verifying signatures of directory objects
      with digests longer than SHA1.  Bugfix on 0.2.2.20-alpha;
      fixes bug 2409; found by "piebeer".
+1 −1
Changes for src/or/routerparse.c: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -1088,7 +1088,7 @@ check_signature_token(const char *digest,
  signed_digest = tor_malloc(keysize);
  if (crypto_pk_public_checksig(pkey, signed_digest, keysize,
                                tok->object_body, tok->object_size)
      < DIGEST_LEN) {
      < digest_len) {
    log_warn(LD_DIR, "Error reading %s: invalid signature.", doctype);
    tor_free(signed_digest);
    return -1;