summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryasuoka <yasuoka@openbsd.org>2016-04-04 17:35:07 +0000
committeryasuoka <yasuoka@openbsd.org>2016-04-04 17:35:07 +0000
commit45000dfaad6adf90603645ef8e71e40670c6a6be (patch)
tree1cff37015fba650d3aa2dbff5ca667983bb7167f
parentDirectly use physical addresses from ELF header for kernel loading. (diff)
downloadwireguard-openbsd-45000dfaad6adf90603645ef8e71e40670c6a6be.tar.xz
wireguard-openbsd-45000dfaad6adf90603645ef8e71e40670c6a6be.zip
Fix memory leak. Call proto_free() always to free proto.
Diff from Yuuichi Someya. ok reyk markus
-rw-r--r--sbin/isakmpd/message.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/sbin/isakmpd/message.c b/sbin/isakmpd/message.c
index 30d8e718211..ee0df3a4282 100644
--- a/sbin/isakmpd/message.c
+++ b/sbin/isakmpd/message.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: message.c,v 1.128 2015/08/20 22:02:21 deraadt Exp $ */
+/* $OpenBSD: message.c,v 1.129 2016/04/04 17:35:07 yasuoka Exp $ */
/* $EOM: message.c,v 1.156 2000/10/10 12:36:39 provos Exp $ */
/*
@@ -2182,7 +2182,7 @@ retry_transform:
* the SA.
*/
while ((proto = TAILQ_FIRST(&sa->protos)))
- TAILQ_REMOVE(&sa->protos, proto, link);
+ proto_free(proto);
/*
* Skip to the last transform of this
@@ -2242,8 +2242,7 @@ retry_transform:
*/
while ((proto =
TAILQ_FIRST(&sa->protos)))
- TAILQ_REMOVE(&sa->protos,
- proto, link);
+ proto_free(proto);
goto retry_transform;
}
}
@@ -2270,10 +2269,9 @@ retry_transform:
cleanup:
/*
* Remove potentially succeeded choices from the SA.
- * XXX Do we leak struct protos and related data here?
*/
while ((proto = TAILQ_FIRST(&sa->protos)))
- TAILQ_REMOVE(&sa->protos, proto, link);
+ proto_free(proto);
return -1;
}