aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2014-09-11 17:33:52 +0200
committerTobias Brunner <tobias@strongswan.org>2014-09-11 17:52:37 +0200
commit8ca9a67fac597246cefaeaa3932446b6d053afc7 (patch)
tree3be6d066871f90254130c38c35c373eb3838707f
parentea50394bf1853627920d7f9028b3749172467424 (diff)
downloadstrongswan-8ca9a67fac597246cefaeaa3932446b6d053afc7.tar.bz2
strongswan-8ca9a67fac597246cefaeaa3932446b6d053afc7.tar.xz
auth-cfg: Fix crash after several reauthentications with multiple authentication rounds
Due to the issue described in c641974, purge() inadvertently destroyed CA certificates that should have been kept (while the pointer to these objects remained in the array). This lead to incorrect reference counts and after a few reauthentications with multiple authentication rounds, which cause calls to purge(TRUE), to crashes.
-rw-r--r--src/libstrongswan/credentials/auth_cfg.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libstrongswan/credentials/auth_cfg.c b/src/libstrongswan/credentials/auth_cfg.c
index aeeb4198f..db08c6b96 100644
--- a/src/libstrongswan/credentials/auth_cfg.c
+++ b/src/libstrongswan/credentials/auth_cfg.c
@@ -998,8 +998,8 @@ METHOD(auth_cfg_t, purge, void,
{
if (!keep_ca || entry->type != AUTH_RULE_CA_CERT)
{
- array_remove_at(this->entries, enumerator);
destroy_entry_value(entry);
+ array_remove_at(this->entries, enumerator);
}
}
enumerator->destroy(enumerator);