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/?p=silc.git;a=commitdiff_plain;h=dc0e9d3b61c1adab40d23e48486f857f14bdcbd8 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);