[gtk-vnc] Avoid crash if attempt to connect to an invalid host or port
- From: Daniel P. Berrange <dberrange src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk-vnc] Avoid crash if attempt to connect to an invalid host or port
- Date: Wed, 8 Feb 2017 12:37:30 +0000 (UTC)
commit c61d47c7e25110073395458cb92d87e53489850a
Author: Christophe Fergeau <cfergeau redhat com>
Date: Fri Dec 9 16:09:41 2016 +0100
Avoid crash if attempt to connect to an invalid host or port
If vnc_display_open_host() is called with a NULL port or host,
vnc_connection_open_host_internal() will eventually crash.
This commits adds runtime checks to return early with
g_return_val_if_fail() when this happens rather than
crashing
#0 0x00007ffff37de3d3 in __strchr_sse2 () at ../sysdeps/x86_64/strchr.S:32
#1 0x00007ffff4661a17 in g_inet_socket_address_new_from_string (address=0x0, port=0)
at ginetsocketaddress.c:416
#2 0x00007ffff466b784 in g_network_address_parse_sockaddr (addr=addr@entry=0x969f50 [GNetworkAddress])
at gnetworkaddress.c:245
#3 0x00007ffff466ba94 in g_network_address_address_enumerator_next (enumerator=0x972ca0
[GNetworkAddressAddressEnumerator], cancellable=0x0, error=<optimized out>) at gnetworkaddress.c:919
#4 0x00007ffff727130b in vnc_connection_open_host_internal (conn=0x99bbf0 [VncConnection])
at vncconnection.c:5395
#5 0x00007ffff7271523 in vnc_connection_coroutine (opaque=0x99bbf0) at vncconnection.c:5448
#6 0x00007ffff7272e54 in coroutine_trampoline (cc=0x998080) at coroutine_ucontext.c:55
#7 0x00007ffff7272b65 in continuation_trampoline (i0=10059904, i1=0) at continuation.c:43
#8 0x00007ffff379dc00 in __start_context () at /lib64/libc.so.6
#9 0x0000000000998448 in ()
#10 0x0000000000000000 in ()
src/vncconnection.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
---
diff --git a/src/vncconnection.c b/src/vncconnection.c
index 8a52346..61f74b4 100644
--- a/src/vncconnection.c
+++ b/src/vncconnection.c
@@ -5425,6 +5425,8 @@ static gboolean vnc_connection_open_host_internal(VncConnection *conn)
VNC_DEBUG("Resolving host %s %s", priv->host, priv->port);
+ g_return_val_if_fail((priv->host != NULL) && (port != 0), FALSE);
+
addr = g_network_address_new(priv->host, port);
enumerator = g_socket_connectable_enumerate (addr);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]