From: Azat Khuzhin Date: Sat, 12 Nov 2022 17:44:44 +0000 (+0100) Subject: ws-chat-server: avoid SIGSEGV in case of evws_new_session() failure X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8482e227a8903e70cd1f13f437e5f2b4d3450688;p=libevent ws-chat-server: avoid SIGSEGV in case of evws_new_session() failure --- diff --git a/sample/ws-chat-server.c b/sample/ws-chat-server.c index 731d1281..fae23e35 100644 --- a/sample/ws-chat-server.c +++ b/sample/ws-chat-server.c @@ -152,13 +152,19 @@ on_ws(struct evhttp_request *req, void *arg) socklen_t len; client = calloc(sizeof(*client), 1); + addr2str((struct sockaddr *)&addr, client->name, sizeof(client->name)); client->evws = evws_new_session(req, on_msg_cb, client, 0); + if (!client->evws) { + free(client); + log_d("Failed to create session (for %s)\n", client->name); + return; + } + fd = bufferevent_getfd(evws_connection_get_bufferevent(client->evws)); len = sizeof(addr); getpeername(fd, (struct sockaddr *)&addr, &len); - addr2str((struct sockaddr *)&addr, client->name, sizeof(client->name)); log_d("New client joined from %s\n", client->name); evws_connection_set_closecb(client->evws, on_close_cb, client);