From: Pekka Riikonen Date: Thu, 26 Feb 2009 06:06:02 +0000 (+0200) Subject: SKE: When failure is received mark SKE always failed X-Git-Tag: silc.server.1.1.16~6 X-Git-Url: http://git.silcnet.org/gitweb/?a=commitdiff_plain;h=dc0e9d3b61c1adab40d23e48486f857f14bdcbd8;hp=4993b03b9ccd85373a60f9cf5c8d99a865898fda;p=silc.git SKE: When failure is received mark SKE always failed Mark the SKE failed even if we don't receive error from remote. Fixes crash where the callback is called back to application without valid key material and without error status. --- diff --git a/lib/silcske/silcske.c b/lib/silcske/silcske.c index 5cb7c91d..df641f61 100644 --- a/lib/silcske/silcske.c +++ b/lib/silcske/silcske.c @@ -1809,10 +1809,10 @@ SILC_FSM_STATE(silc_ske_st_initiator_failure) if (ske->packet && silc_buffer_len(&ske->packet->buffer) == 4) { SILC_GET32_MSB(error, ske->packet->buffer.data); - ske->status = error; silc_packet_free(ske->packet); ske->packet = NULL; } + ske->status = error; SILC_LOG_DEBUG(("Error %s (%d) received during key exchange", silc_ske_map_status(ske->status), ske->status)); @@ -2383,10 +2383,10 @@ SILC_FSM_STATE(silc_ske_st_responder_failure) if (ske->packet && silc_buffer_len(&ske->packet->buffer) == 4) { SILC_GET32_MSB(error, ske->packet->buffer.data); - ske->status = error; silc_packet_free(ske->packet); ske->packet = NULL; } + ske->status = error; silc_packet_stream_unlink(ske->stream, &silc_ske_stream_cbs, ske); silc_schedule_task_del_by_context(ske->schedule, ske);