ikev2: Fix segfault when reestablishing CHILD_SAs due to closeaction=restart|hold

This regression was introduced with c949a4d5.
This commit is contained in:
Tobias Brunner 2013-08-13 10:03:54 +02:00
parent 3f29ff82c3
commit e42ab08a73
1 changed files with 4 additions and 3 deletions

View File

@ -198,7 +198,7 @@ static status_t destroy_and_reestablish(private_child_delete_t *this)
child_sa_t *child_sa; child_sa_t *child_sa;
child_cfg_t *child_cfg; child_cfg_t *child_cfg;
protocol_id_t protocol; protocol_id_t protocol;
u_int32_t spi; u_int32_t spi, reqid;
action_t action; action_t action;
status_t status = SUCCESS; status_t status = SUCCESS;
@ -211,6 +211,7 @@ static status_t destroy_and_reestablish(private_child_delete_t *this)
charon->bus->child_updown(charon->bus, child_sa, FALSE); charon->bus->child_updown(charon->bus, child_sa, FALSE);
} }
spi = child_sa->get_spi(child_sa, TRUE); spi = child_sa->get_spi(child_sa, TRUE);
reqid = child_sa->get_reqid(child_sa);
protocol = child_sa->get_protocol(child_sa); protocol = child_sa->get_protocol(child_sa);
child_cfg = child_sa->get_config(child_sa); child_cfg = child_sa->get_config(child_sa);
child_cfg->get_ref(child_cfg); child_cfg->get_ref(child_cfg);
@ -223,12 +224,12 @@ static status_t destroy_and_reestablish(private_child_delete_t *this)
case ACTION_RESTART: case ACTION_RESTART:
child_cfg->get_ref(child_cfg); child_cfg->get_ref(child_cfg);
status = this->ike_sa->initiate(this->ike_sa, child_cfg, status = this->ike_sa->initiate(this->ike_sa, child_cfg,
child_sa->get_reqid(child_sa), NULL, NULL); reqid, NULL, NULL);
break; break;
case ACTION_ROUTE: case ACTION_ROUTE:
charon->traps->install(charon->traps, charon->traps->install(charon->traps,
this->ike_sa->get_peer_cfg(this->ike_sa), child_cfg, this->ike_sa->get_peer_cfg(this->ike_sa), child_cfg,
child_sa->get_reqid(child_sa)); reqid);
break; break;
default: default:
break; break;