]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix #1415: patch to free dnscrypt environment on reload.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Mon, 28 Aug 2017 07:49:42 +0000 (07:49 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Mon, 28 Aug 2017 07:49:42 +0000 (07:49 +0000)
git-svn-id: file:///svn/unbound/trunk@4310 be551aaa-1e26-0410-a405-d3ace91eadb9

daemon/daemon.c
dnscrypt/dnscrypt.c
dnscrypt/dnscrypt.h
doc/Changelog

index e90bcdd1ad828ac1ef24a2ea63b2a72fa067d674..7411fabe7573631cf9f15f0f88e9b6d21cabfb8e 100644 (file)
@@ -692,6 +692,9 @@ daemon_cleanup(struct daemon* daemon)
        daemon->num = 0;
 #ifdef USE_DNSTAP
        dt_delete(daemon->dtenv);
+#endif
+#ifdef USE_DNSCRYPT
+       dnsc_delete(daemon->dnscenv);
 #endif
        daemon->cfg = NULL;
 }
index 9e858c3fb0613d159cb88a6fb920a6d9cb4b8b7a..51308e3750c268ae5dac171396e2bdb33a6243d5 100644 (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);
             }
         }
+        verbose(VERB_OPS, "DNSCrypt: adding local data to config: %s", rr);
         snprintf(rr + strlen(rr), rrlen - 1 - strlen(rr), "\"");
         cfg_strlist_insert(&cfg->local_data, strdup(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,
                sizeof *env->keypairs);
-       env->certs = sodium_allocarray(env->signed_certs_count, 
+       env->certs = sodium_allocarray(env->signed_certs_count,
                sizeof *env->certs);
 
        cert_id = 0U;
@@ -649,3 +650,16 @@ dnsc_apply_cfg(struct dnsc_env *env, struct config_file *cfg)
        }
        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);
+}
index 26c2bb21d6b6dadc94375e4b7652ed811b93606b..189dca54edc7e92bd8849d296d4919de3f1a6eca 100644 (file)
@@ -52,7 +52,7 @@ typedef struct cert_ {
 
 struct dnsc_env {
        struct SignedCert *signed_certs;
-    dnsccert *certs;
+       dnsccert *certs;
        size_t signed_certs_count;
        uint8_t provider_publickey[crypto_sign_ed25519_PUBLICKEYBYTES];
        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.
  * \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);
 
+/**
+ * Delete DNSCrypt environment
+ *
+ */
+void dnsc_delete(struct dnsc_env *env);
+
 /**
  * handle a crypted dnscrypt request.
  * Determine wether or not a query is coming over the dnscrypt listener and
index e9f7eed3d169954f4a2e84d03ecb23e84a6a541c..8168e145f303ebc775c29eb3ac57c8506fef07a3 100644 (file)
@@ -1,3 +1,6 @@
+28 August 2017: Wouter
+       - Fix #1415: patch to free dnscrypt environment on reload.
+
 23 August 2017: Wouter
        - Fix #1407: Add ECS options check to unbound-checkconf.
        - make depend