Tidy initialisation in hash_questions.c

This commit is contained in:
Simon Kelley
2021-01-22 22:50:25 +00:00
parent 3f535da79e
commit e75069f79a
3 changed files with 18 additions and 17 deletions

View File

@@ -390,8 +390,8 @@ int main (int argc, char **argv)
if (daemon->port != 0) if (daemon->port != 0)
{ {
cache_init(); cache_init();
blockdata_init(); blockdata_init();
hash_questions_init();
} }
#ifdef HAVE_INOTIFY #ifdef HAVE_INOTIFY

View File

@@ -1261,6 +1261,7 @@ size_t filter_rrsigs(struct dns_header *header, size_t plen);
int setup_timestamp(void); int setup_timestamp(void);
/* hash_questions.c */ /* hash_questions.c */
void hash_questions_init(void);
unsigned char *hash_questions(struct dns_header *header, size_t plen, char *name); unsigned char *hash_questions(struct dns_header *header, size_t plen, char *name);
/* crypto.c */ /* crypto.c */

View File

@@ -29,27 +29,24 @@
#include "dnsmasq.h" #include "dnsmasq.h"
#if defined(HAVE_DNSSEC) || defined(HAVE_NETTLEHASH) #if defined(HAVE_DNSSEC) || defined(HAVE_NETTLEHASH)
static const struct nettle_hash *hash;
static void *ctx;
static unsigned char *digest;
void hash_questions_init(void)
{
if (!(hash = hash_find("sha256")) || !hash_init(hash, &ctx, &digest))
die(_("Failed to create SHA-256 hash object"), NULL, EC_MISC);
}
unsigned char *hash_questions(struct dns_header *header, size_t plen, char *name) unsigned char *hash_questions(struct dns_header *header, size_t plen, char *name)
{ {
int q; int q;
unsigned char *p = (unsigned char *)(header+1); unsigned char *p = (unsigned char *)(header+1);
const struct nettle_hash *hash;
void *ctx;
unsigned char *digest;
if (!(hash = hash_find("sha256")) || !hash_init(hash, &ctx, &digest))
{
/* don't think this can ever happen. */
static unsigned char dummy[HASH_SIZE];
static int warned = 0;
if (!warned) hash->init(ctx);
my_syslog(LOG_ERR, _("Failed to create SHA-256 hash object"));
warned = 1;
return dummy;
}
for (q = ntohs(header->qdcount); q != 0; q--) for (q = ntohs(header->qdcount); q != 0; q--)
{ {
char *cp, c; char *cp, c;
@@ -91,6 +88,9 @@ static void sha256_init(SHA256_CTX *ctx);
static void sha256_update(SHA256_CTX *ctx, const BYTE data[], size_t len); static void sha256_update(SHA256_CTX *ctx, const BYTE data[], size_t len);
static void sha256_final(SHA256_CTX *ctx, BYTE hash[]); static void sha256_final(SHA256_CTX *ctx, BYTE hash[]);
void hash_questions_init(void)
{
}
unsigned char *hash_questions(struct dns_header *header, size_t plen, char *name) unsigned char *hash_questions(struct dns_header *header, size_t plen, char *name)
{ {