]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Require valid key for dst_key functions
authorMatthijs Mekking <matthijs@isc.org>
Tue, 17 May 2022 10:02:43 +0000 (12:02 +0200)
committerMatthijs Mekking <matthijs@isc.org>
Mon, 23 May 2022 10:31:23 +0000 (12:31 +0200)
Make sure that the key structure is valid when calling the following
functions:
- dst_key_setexternal
- dst_key_isexternal
- dst_key_setmodified
- dst_key_ismodified

This commit is adapted because 9.16 has a different approach
of deconsting the variable.

(cherry picked from commit 888ec4e0d407a9333017d6997a2be81a69658e1f)

lib/dns/dst_api.c

index e5a52aea37f471c26667ba8ab4716b5c1ef6f20d..f5741a1af4075bfdb28d4616f7f1f7c443d474ce 100644 (file)
@@ -482,16 +482,22 @@ dst_key_tofile(const dst_key_t *key, int type, const char *directory) {
 
 void
 dst_key_setexternal(dst_key_t *key, bool value) {
+       REQUIRE(VALID_KEY(key));
+
        key->external = value;
 }
 
 bool
 dst_key_isexternal(dst_key_t *key) {
+       REQUIRE(VALID_KEY(key));
+
        return (key->external);
 }
 
 void
 dst_key_setmodified(dst_key_t *key, bool value) {
+       REQUIRE(VALID_KEY(key));
+
        isc_mutex_lock(&key->mdlock);
        key->modified = value;
        isc_mutex_unlock(&key->mdlock);
@@ -500,10 +506,15 @@ dst_key_setmodified(dst_key_t *key, bool value) {
 bool
 dst_key_ismodified(const dst_key_t *key) {
        bool modified;
+       dst_key_t *k;
 
-       isc_mutex_lock(&(((dst_key_t *)key)->mdlock));
+       REQUIRE(VALID_KEY(key));
+
+       DE_CONST(key, k);
+
+       isc_mutex_lock(&k->mdlock);
        modified = key->modified;
-       isc_mutex_unlock(&(((dst_key_t *)key)->mdlock));
+       isc_mutex_unlock(&k->mdlock);
 
        return (modified);
 }