lws_plat_service_tsi: accessing context before checking for NULL
authornamowen <namowen@github.invalid.com>
Fri, 23 Dec 2016 23:57:34 +0000 (07:57 +0800)
committerAndy Green <andy@warmcat.com>
Fri, 23 Dec 2016 23:57:34 +0000 (07:57 +0800)
https://github.com/warmcat/libwebsockets/issues/730

lib/lws-plat-unix.c
lib/lws-plat-win.c

index b48e10c..18e1558 100644 (file)
@@ -103,7 +103,7 @@ LWS_VISIBLE void lwsl_emit_syslog(int level, const char *line)
 LWS_VISIBLE LWS_EXTERN int
 _lws_plat_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
 {
-       struct lws_context_per_thread *pt = &context->pt[tsi];
+       struct lws_context_per_thread *pt;
        int n = -1, m, c;
        char buf;
 
@@ -112,6 +112,8 @@ _lws_plat_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
        if (!context || !context->vhost_list)
                return 1;
 
+       pt = &context->pt[tsi];
+
        if (timeout_ms < 0)
                goto faked_service;
 
index 7d3ebdd..fa34037 100644 (file)
@@ -149,7 +149,7 @@ LWS_VISIBLE void lwsl_emit_syslog(int level, const char *line)
 LWS_VISIBLE LWS_EXTERN int
 _lws_plat_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
 {
-       struct lws_context_per_thread *pt = &context->pt[tsi];
+       struct lws_context_per_thread *pt;
        WSANETWORKEVENTS networkevents;
        struct lws_pollfd *pfd;
        struct lws *wsi;
@@ -161,6 +161,8 @@ _lws_plat_service_tsi(struct lws_context *context, int timeout_ms, int tsi)
        if (context == NULL)
                return 1;
 
+       pt = &context->pt[tsi];
+
        if (!context->service_tid_detected) {
                struct lws _lws;