bind/backport-0037-Require-valid-key-for-dst_key-functions.patch
gaoxingwang bd4dc94bf1 bind: add some patches
Signed-off-by: huangyu <huangyu106@huawei.com>
2023-01-04 22:12:17 +08:00

71 lines
1.8 KiB
Diff

From d3147417c55cb1277cac42034198a3011c8f5cfb Mon Sep 17 00:00:00 2001
From: Matthijs Mekking <matthijs@isc.org>
Date: Tue, 17 May 2022 12:02:43 +0200
Subject: [PATCH] Require valid key for dst_key functions
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)
Conflict: NA
Reference: https://gitlab.isc.org/isc-projects/bind9/-/commit/d3147417c55cb1277cac42034198a3011c8f5cfb
---
lib/dns/dst_api.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/lib/dns/dst_api.c b/lib/dns/dst_api.c
index e5a52aea37..f5741a1af4 100644
--- a/lib/dns/dst_api.c
+++ b/lib/dns/dst_api.c
@@ -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);
}
--
2.27.0