From d4dd69a254ce6c0338891af41fea4b92db06f4e9 Mon Sep 17 00:00:00 2001 From: Octav Zlatior Date: Fri, 12 Dec 2014 17:33:27 +0100 Subject: [PATCH] Subject: [PATCH] Fixes occasional segfault in lws_chage_pollfd * so it happens that sometimes lws_change_pollfd is called with bad or incomplete data structures, mainly the context pointer obtained from wsi->protocol is null or wsi->position_in_fds_table is -1; checks have been added to avoid this condition --- lib/pollfd.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/pollfd.c b/lib/pollfd.c index 10fd8108..db7ae4a8 100644 --- a/lib/pollfd.c +++ b/lib/pollfd.c @@ -131,7 +131,11 @@ do_ext: int lws_change_pollfd(struct libwebsocket *wsi, int _and, int _or) { + if (!wsi || !wsi->protocol || wsi->position_in_fds_table < 0) + return 1; struct libwebsocket_context *context = wsi->protocol->owning_server; + if (!context) + return 1; int tid; int sampled_tid; struct libwebsocket_pollfd *pfd;