- Fix #1415: patch to free dnscrypt environment on reload.

git-svn-id: file:///svn/unbound/trunk@4310 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
Wouter Wijngaards 2017-08-28 07:49:42 +00:00
parent ffc2f687cf
commit 80f310e2a4
4 changed files with 29 additions and 3 deletions

View file

@ -692,6 +692,9 @@ daemon_cleanup(struct daemon* daemon)
daemon->num = 0; daemon->num = 0;
#ifdef USE_DNSTAP #ifdef USE_DNSTAP
dt_delete(daemon->dtenv); dt_delete(daemon->dtenv);
#endif
#ifdef USE_DNSCRYPT
dnsc_delete(daemon->dnscenv);
#endif #endif
daemon->cfg = NULL; daemon->cfg = NULL;
} }

View file

@ -450,6 +450,7 @@ dnsc_load_local_data(struct dnsc_env* dnscenv, struct config_file *cfg)
snprintf(rr + strlen(rr), rrlen - 1 - strlen(rr), "\\%03d", c); snprintf(rr + strlen(rr), rrlen - 1 - strlen(rr), "\\%03d", c);
} }
} }
verbose(VERB_OPS, "DNSCrypt: adding local data to config: %s", rr);
snprintf(rr + strlen(rr), rrlen - 1 - strlen(rr), "\""); snprintf(rr + strlen(rr), rrlen - 1 - strlen(rr), "\"");
cfg_strlist_insert(&cfg->local_data, strdup(rr)); cfg_strlist_insert(&cfg->local_data, strdup(rr));
free(rr); free(rr);
@ -502,7 +503,7 @@ dnsc_parse_keys(struct dnsc_env *env, struct config_file *cfg)
env->keypairs = sodium_allocarray(env->keypairs_count, env->keypairs = sodium_allocarray(env->keypairs_count,
sizeof *env->keypairs); sizeof *env->keypairs);
env->certs = sodium_allocarray(env->signed_certs_count, env->certs = sodium_allocarray(env->signed_certs_count,
sizeof *env->certs); sizeof *env->certs);
cert_id = 0U; cert_id = 0U;
@ -649,3 +650,16 @@ dnsc_apply_cfg(struct dnsc_env *env, struct config_file *cfg)
} }
return 0; return 0;
} }
void
dnsc_delete(struct dnsc_env *env)
{
if(!env) {
return;
}
verbose(VERB_OPS, "DNSCrypt: Freeing environment.");
sodium_free(env->signed_certs);
sodium_free(env->certs);
sodium_free(env->keypairs);
free(env);
}

View file

@ -52,7 +52,7 @@ typedef struct cert_ {
struct dnsc_env { struct dnsc_env {
struct SignedCert *signed_certs; struct SignedCert *signed_certs;
dnsccert *certs; dnsccert *certs;
size_t signed_certs_count; size_t signed_certs_count;
uint8_t provider_publickey[crypto_sign_ed25519_PUBLICKEYBYTES]; uint8_t provider_publickey[crypto_sign_ed25519_PUBLICKEYBYTES];
uint8_t provider_secretkey[crypto_sign_ed25519_SECRETKEYBYTES]; uint8_t provider_secretkey[crypto_sign_ed25519_SECRETKEYBYTES];
@ -71,7 +71,7 @@ struct dnscrypt_query_header {
}; };
/** /**
* Initialize DNSCrypt enviroment. * Initialize DNSCrypt environment.
* Initialize sodium library and allocate the dnsc_env structure. * Initialize sodium library and allocate the dnsc_env structure.
* \return an uninitialized struct dnsc_env. * \return an uninitialized struct dnsc_env.
*/ */
@ -88,6 +88,12 @@ struct dnsc_env * dnsc_create(void);
*/ */
int dnsc_apply_cfg(struct dnsc_env *env, struct config_file *cfg); int dnsc_apply_cfg(struct dnsc_env *env, struct config_file *cfg);
/**
* Delete DNSCrypt environment
*
*/
void dnsc_delete(struct dnsc_env *env);
/** /**
* handle a crypted dnscrypt request. * handle a crypted dnscrypt request.
* Determine wether or not a query is coming over the dnscrypt listener and * Determine wether or not a query is coming over the dnscrypt listener and

View file

@ -1,3 +1,6 @@
28 August 2017: Wouter
- Fix #1415: patch to free dnscrypt environment on reload.
23 August 2017: Wouter 23 August 2017: Wouter
- Fix #1407: Add ECS options check to unbound-checkconf. - Fix #1407: Add ECS options check to unbound-checkconf.
- make depend - make depend