fixed SIGSEGV when setup of an additional CHILD_SA fails
authorMartin Willi <martin@strongswan.org>
Mon, 30 Oct 2006 09:53:54 +0000 (09:53 -0000)
committerMartin Willi <martin@strongswan.org>
Mon, 30 Oct 2006 09:53:54 +0000 (09:53 -0000)
src/charon/sa/transactions/create_child_sa.c

index dab6bf1..64984cb 100644 (file)
@@ -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);