diff options
author | Tobias Brunner <tobias@strongswan.org> | 2014-09-11 17:33:52 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2014-09-11 17:52:37 +0200 |
commit | 8ca9a67fac597246cefaeaa3932446b6d053afc7 (patch) | |
tree | 3be6d066871f90254130c38c35c373eb3838707f | |
parent | ea50394bf1853627920d7f9028b3749172467424 (diff) | |
download | strongswan-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.c | 2 |
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); |