From 5923be21b43b1c57ff9f390e4105748d9dd69ce8 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Mon, 30 Oct 2006 09:53:54 +0000 Subject: [PATCH] fixed SIGSEGV when setup of an additional CHILD_SA fails --- src/charon/sa/transactions/create_child_sa.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/charon/sa/transactions/create_child_sa.c b/src/charon/sa/transactions/create_child_sa.c index dab6bf178..64984cbad 100644 --- a/src/charon/sa/transactions/create_child_sa.c +++ b/src/charon/sa/transactions/create_child_sa.c @@ -928,8 +928,14 @@ static void destroy(private_create_child_sa_t *this) DESTROY_IF(this->proposal); DESTROY_IF(this->child_sa); DESTROY_IF(this->policy); - this->tsi->destroy_offset(this->tsi, offsetof(traffic_selector_t, destroy)); - this->tsr->destroy_offset(this->tsr, offsetof(traffic_selector_t, destroy)); + if (this->tsi) + { + this->tsi->destroy_offset(this->tsi, offsetof(traffic_selector_t, destroy)); + } + if (this->tsr) + { + this->tsr->destroy_offset(this->tsr, offsetof(traffic_selector_t, destroy)); + } chunk_free(&this->nonce_i); chunk_free(&this->nonce_r); chunk_free(&this->nonce_s);