From 6d8a798742756e191e11947f3b7fc24ed5e301c4 Mon Sep 17 00:00:00 2001 From: Andrii Sevastianov Date: Tue, 3 May 2022 16:47:14 +0200 Subject: [PATCH] validity: fix bad pointer access We cannot access wsi after __lws_close_free_wsi. --- lib/core-net/wsi-timeout.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/core-net/wsi-timeout.c b/lib/core-net/wsi-timeout.c index bbaed54c8..b72f134f5 100644 --- a/lib/core-net/wsi-timeout.c +++ b/lib/core-net/wsi-timeout.c @@ -206,14 +206,15 @@ lws_validity_cb(lws_sorted_usec_list_t *sul) if (wsi->validity_hup) { lwsl_wsi_info(wsi, "validity too old"); - struct lws_context_per_thread *pt = &wsi->a.context->pt[(int)wsi->tsi]; + struct lws_context *cx = wsi->a.context; + struct lws_context_per_thread *pt = &cx->pt[(int)wsi->tsi]; - lws_context_lock(wsi->a.context, __func__); + lws_context_lock(cx, __func__); lws_pt_lock(pt, __func__); __lws_close_free_wsi(wsi, LWS_CLOSE_STATUS_NOSTATUS, "validity timeout"); lws_pt_unlock(pt); - lws_context_unlock(wsi->a.context); + lws_context_unlock(cx); return; }