]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
child-create: Destroy nonceg in migrate()
authorTobias Brunner <tobias@strongswan.org>
Tue, 5 May 2015 07:51:19 +0000 (09:51 +0200)
committerTobias Brunner <tobias@strongswan.org>
Tue, 5 May 2015 08:55:14 +0000 (10:55 +0200)
Since another nonce gets allocated later (if any was allocated already)
this would have resulted in a leaked nonce context ID when used in charon-tkm.

src/libcharon/sa/ikev2/tasks/child_create.c

index d74eaab43b05e000e67f5994937eb68a59bd0433..e0f930c3c7ea4473921da8c454d423913f0373f4 100644 (file)
@@ -221,6 +221,7 @@ static status_t get_nonce(message_t *message, chunk_t *nonce)
  */
 static bool generate_nonce(private_child_create_t *this)
 {
+       this->nonceg = this->keymat->keymat.create_nonce_gen(&this->keymat->keymat);
        if (!this->nonceg)
        {
                DBG1(DBG_IKE, "no nonce generator found to create nonce");
@@ -1580,6 +1581,7 @@ METHOD(task_t, migrate, void,
        }
        DESTROY_IF(this->child_sa);
        DESTROY_IF(this->proposal);
+       DESTROY_IF(this->nonceg);
        DESTROY_IF(this->dh);
        this->dh_failed = FALSE;
        if (this->proposals)
@@ -1671,7 +1673,6 @@ child_create_t *child_create_create(ike_sa_t *ike_sa,
                .rekey = rekey,
                .retry = FALSE,
        );
-       this->nonceg = this->keymat->keymat.create_nonce_gen(&this->keymat->keymat);
 
        if (config)
        {