io: fix mem leak in websock error path
PATCH 1/1 io: fix mem leak in websock error path
Coverity pointed out the 'date' is not free()d in the error path
Signed-off-by Daniel P. Berrange <[email protected]>
--- io/channel-websock.c | 1 + 1 file changed, 1 insertion(+)
io/channel-websock.c +1 -0
@@ -355,6 +355,7 @@ static void qio_channel_websock_handshake_send_res_ok(QIOChannelWebsock *ioc, QIO_CHANNEL_WEBSOCK_GUID_LEN, &accept, errp) < 0) { +g_free (date);qio_channel_websock_handshake_send_res_err ( ioc,QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_SERVER_ERR );return ;
Signature · 1 line
2.13.5
Quoted 7 lines · Daniel P. Berrange
Coverity pointed out the 'date' is not free()d in the error path
Signed-off-by Daniel P. Berrange <[email protected]>--- io/channel-websock.c | 1 + 1 file changed, 1 insertion(+)
Reviewed-by Eric Blake <[email protected]>
Quoted 14 lines
io/channel-websock.c +1
-0@@ -355,6 +355,7 @@ static void qio_channel_websock_handshake_send_res_ok(QIOChannelWebsock *ioc, QIO_CHANNEL_WEBSOCK_GUID_LEN, &accept, errp) < 0) { +g_free (date);qio_channel_websock_handshake_send_res_err ( ioc,QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_SERVER_ERR );return ;
Signature · 3 lines
Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
Hi Daniel,
Quoted 13 lines · Daniel P. Berrange
Coverity pointed out the 'date' is not free()d in the error path
Signed-off-by Daniel P. Berrange <[email protected]>--- io/channel-websock.c | 1 + 1 file changed, 1 insertion(+)io/channel-websock.c +0
-0
io/channel-websock.c static void qio_channel_websock_handshake_send_res_ok(QIOChannelWebsock *ioc, · line 358
Quoted 4 lines
io/channel-websock.c +1
-0@@ -355,6 +355,7 @@ static void qio_channel_websock_handshake_send_res_ok(QIOChannelWebsock *ioc, QIO_CHANNEL_WEBSOCK_GUID_LEN, &accept, errp) < 0) { +g_free (date);
It looks cleaner to only call qio_channel_websock_date_str() before to use date, which is _after_ qcrypto_hash_base64() might fails.
io/channel-websock.c static void qio_channel_websock_handshake_send_res_ok(QIOChannelWebsock *ioc, · line 361
Quoted 3 lines
io/channel-websock.c +0
-0qio_channel_websock_handshake_send_res_err ( ioc,QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_SERVER_ERR );return ;
}
+ date = qio_channel_websock_date_str();
qio_channel_websock_handshake_send_res(
ioc, QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_OK, date, accept);
g_free(date);
g_free(accept);
}