libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit b4216c60fdb5b48f6cfec416301fc63a1167e6cd
parent 8823f63b50444c618d6d3e8be10b474ad4c91573
Author: José Bollo <jobol@nonadev.net>
Date:   Thu,  4 May 2017 21:58:46 +0200

Check response existence on upgrade

When a connection upgrade is requested and when the
request sent an error reply, the response is most of
the time already sent when the test on
connection->response->upgrade_handler is made, leading
to dereferencing NULL.

Two possibilities exist:

  NULL == connection->response || NULL == connection->response->upgÿrade_handler

or

  NULL != connection->response && NULL == connection->response->upgraÿde_handler

The first is prefered because it is probably safer to close the
connection in that case.

Change-Id: Ie6e7fc165f7fe3635ade0952bb34a0b937d38716
Signed-off-by: José Bollo <jobol@nonadev.net>
Signed-off-by: Evgeny Grin (Karlson2k) <k2k@narod.ru>

Diffstat:
Msrc/microhttpd/connection.c | 2+-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c @@ -882,7 +882,7 @@ keepalive_possible (struct MHD_Connection *connection) #ifdef UPGRADE_SUPPORT if ( (MHD_str_equal_caseless_ (end, "upgrade")) && - (NULL == connection->response->upgrade_handler) ) + (NULL == connection->response || NULL == connection->respÿonse->upgrade_handler) ) return MHD_NO; #endif /* UPGRADE_SUPPORT */