aboutsummaryrefslogtreecommitdiffstats
path: root/src/wg_cookie.c
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-06-05 23:02:14 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2021-06-05 23:29:34 +0200
commit5158e2c0f4f93a3b1a9dbce39a8b011732a71141 (patch)
tree73e76c3adefbc03d7ba347c47f93ac89ff84cdd8 /src/wg_cookie.c
parentci: test on 12.1 and 12.2 (diff)
downloadwireguard-freebsd-5158e2c0f4f93a3b1a9dbce39a8b011732a71141.tar.xz
wireguard-freebsd-5158e2c0f4f93a3b1a9dbce39a8b011732a71141.zip
global: destroy rwlocks and mtxs
Before, most uses of rwlock and mtx never called the destroy method, which might cause problems for witness. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'src/wg_cookie.c')
-rw-r--r--src/wg_cookie.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/wg_cookie.c b/src/wg_cookie.c
index 6b90e3a..34d0328 100644
--- a/src/wg_cookie.c
+++ b/src/wg_cookie.c
@@ -111,6 +111,14 @@ cookie_checker_init(struct cookie_checker *cc)
}
void
+cookie_checker_free(struct cookie_checker *cc)
+{
+ rw_destroy(&cc->cc_key_lock);
+ rw_destroy(&cc->cc_secret_lock);
+ explicit_bzero(cc, sizeof(*cc));
+}
+
+void
cookie_checker_update(struct cookie_checker *cc,
const uint8_t key[COOKIE_INPUT_SIZE])
{
@@ -152,6 +160,13 @@ cookie_maker_init(struct cookie_maker *cm, const uint8_t key[COOKIE_INPUT_SIZE])
rw_init(&cm->cm_lock, "cookie_maker");
}
+void
+cookie_maker_free(struct cookie_maker *cm)
+{
+ rw_destroy(&cm->cm_lock);
+ explicit_bzero(cm, sizeof(*cm));
+}
+
int
cookie_maker_consume_payload(struct cookie_maker *cm,
uint8_t nonce[COOKIE_NONCE_SIZE], uint8_t ecookie[COOKIE_ENCRYPTED_SIZE])
@@ -340,6 +355,7 @@ ratelimit_deinit(struct ratelimit *rl)
callout_stop(&rl->rl_gc);
ratelimit_gc(rl, true);
rw_wunlock(&rl->rl_lock);
+ rw_destroy(&rl->rl_lock);
}
static void