From 2e4537c277d2fe0c1eb87fee73528c3547f9e401 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Wed, 4 Oct 2017 04:24:36 +0200 Subject: send: put keypair reference --- src/send.c | 1 + src/tests/netns.sh | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) (limited to 'src') diff --git a/src/send.c b/src/send.c index 0d73560..d1fe150 100644 --- a/src/send.c +++ b/src/send.c @@ -215,6 +215,7 @@ void packet_encrypt_worker(struct work_struct *work) dev_kfree_skb(skb); } } + noise_keypair_put(ctx->keypair); /* Dereferencing ctx is unsafe once ctx->is_finished == true, so * we grab an additional reference to peer. */ peer = peer_rcu_get(ctx->peer); diff --git a/src/tests/netns.sh b/src/tests/netns.sh index a11fb3f..a3145b8 100755 --- a/src/tests/netns.sh +++ b/src/tests/netns.sh @@ -39,6 +39,7 @@ ip2() { pretty 2 "ip $*"; ip -n $netns2 "$@"; } sleep() { read -t "$1" -N 0 || true; } waitiperf() { pretty "${1//*-}" "wait for iperf:5201"; while [[ $(ss -N "$1" -tlp 'sport = 5201') != *iperf3* ]]; do sleep 0.1; done; } waitncatudp() { pretty "${1//*-}" "wait for udp:1111"; while [[ $(ss -N "$1" -ulp 'sport = 1111') != *ncat* ]]; do sleep 0.1; done; } +waitncattcp() { pretty "${1//*-}" "wait for tcp:1111"; while [[ $(ss -N "$1" -tlp 'sport = 1111') != *ncat* ]]; do sleep 0.1; done; } waitiface() { pretty "${1//*-}" "wait for $2 to come up"; ip netns exec "$1" bash -c "while [[ \$(< \"/sys/class/net/$2/operstate\") != up ]]; do read -t .1 -N 0 || true; done;"; } cleanup() { @@ -405,4 +406,22 @@ while read -r line; do done < <(n0 wg show wg0 allowed-ips) ((i == 40)) ip0 link del wg0 + ! n0 wg show doesnotexist || false + +declare -A objects +n0 ncat -i 1 -l -p 1111 < /dev/kmsg & +waitncattcp $netns0 +while read -r line; do + [[ $line =~ .*(wg[0-9]+:\ [A-Z][a-z]+\ [0-9]+)\ .*(created|destroyed).* ]] || continue + objects["${BASH_REMATCH[1]}"]+="${BASH_REMATCH[2]}" +done < <(n0 ncat -i 1 127.0.0.1 1111) +alldeleted=1 +for object in "${!objects[@]}"; do + if [[ ${objects["$object"]} != *createddestroyed ]]; then + echo "Error: $object: merely ${objects["$object"]}" >&3 + alldeleted=0 + fi +done +[[ $alldeleted -eq 1 ]] +pretty "" "Objects that were created were also destroyed." -- cgit v1.2.3-59-g8ed1b