From: Martin Willi Date: Tue, 13 Mar 2012 09:55:58 +0000 (+0100) Subject: Fixed crash and locking issues while unrouting connections via stroke X-Git-Tag: 4.6.3~100 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bc403eb1e5e26d93aad6a29ba001cd439ce58784;p=thirdparty%2Fstrongswan.git Fixed crash and locking issues while unrouting connections via stroke --- diff --git a/src/libcharon/plugins/stroke/stroke_control.c b/src/libcharon/plugins/stroke/stroke_control.c index f0d8f3b746..729e9d7579 100644 --- a/src/libcharon/plugins/stroke/stroke_control.c +++ b/src/libcharon/plugins/stroke/stroke_control.c @@ -633,8 +633,7 @@ METHOD(stroke_control_t, unroute, void, { child_sa_t *child_sa; enumerator_t *enumerator; - u_int32_t id; - bool found = FALSE; + u_int32_t id = 0; if (charon->shunts->uninstall(charon->shunts, msg->unroute.name)) { @@ -648,15 +647,17 @@ METHOD(stroke_control_t, unroute, void, if (streq(msg->unroute.name, child_sa->get_name(child_sa))) { id = child_sa->get_reqid(child_sa); - enumerator->destroy(enumerator); - charon->traps->uninstall(charon->traps, id); - fprintf(out, "configuration '%s' unrouted\n", msg->unroute.name); - found = TRUE; + break; } } enumerator->destroy(enumerator); - if (!found) + if (id) + { + charon->traps->uninstall(charon->traps, id); + fprintf(out, "configuration '%s' unrouted\n", msg->unroute.name); + } + else { fprintf(out, "configuration '%s' not found\n", msg->unroute.name); }