From 383a27afc58b7a416fe0f30c80fdd069bc03d5d4 Mon Sep 17 00:00:00 2001 From: teor Date: Wed, 3 Jun 2015 03:56:05 +1000 Subject: [PATCH] Ensure signing_key is non-NULL before accessing one of its members signing_key can be NULL in ed_key_init_from_file in routerkeys.c. Discovered by clang 3.7 address sanitizer. Fix on c03694938ed0, not in any released version of Tor. --- changes/bug16115-signing-key-NULL-check | 6 ++++++ src/or/routerkeys.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 changes/bug16115-signing-key-NULL-check diff --git a/changes/bug16115-signing-key-NULL-check b/changes/bug16115-signing-key-NULL-check new file mode 100644 index 0000000000..3d4f05bc28 --- /dev/null +++ b/changes/bug16115-signing-key-NULL-check @@ -0,0 +1,6 @@ + o Minor fixes (threads, comments): + - Ensure signing_key is non-NULL before accessing one of its members + signing_key can be NULL in ed_key_init_from_file in routerkeys.c. + Discovered by clang 3.7 address sanitizer. + Patch by "teor". + Fix on c03694938ed0, not in any released version of Tor. diff --git a/src/or/routerkeys.c b/src/or/routerkeys.c index b17d1958f7..e79204cf09 100644 --- a/src/or/routerkeys.c +++ b/src/or/routerkeys.c @@ -152,7 +152,8 @@ ed_key_init_from_file(const char *fname, uint32_t flags, ED25519_PUBKEY_LEN)) { tor_log(severity, LD_OR, "Cert was for wrong key"); bad_cert = 1; - } else if (tor_cert_checksig(cert, &signing_key->pubkey, now) < 0 && + } else if (signing_key && + tor_cert_checksig(cert, &signing_key->pubkey, now) < 0 && (signing_key || cert->cert_expired)) { tor_log(severity, LD_OR, "Can't check certificate"); bad_cert = 1; -- 2.11.4.GIT