From b1883ec5f518e95253d8cf7b6cdb9bf79e64d7e0 Mon Sep 17 00:00:00 2001 From: sta Date: Wed, 1 Jun 2016 14:45:49 +0900 Subject: [PATCH] [Modify] Add a host check --- websocket-sharp/Net/EndPointManager.cs | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/websocket-sharp/Net/EndPointManager.cs b/websocket-sharp/Net/EndPointManager.cs index 85c1de88..15952b36 100644 --- a/websocket-sharp/Net/EndPointManager.cs +++ b/websocket-sharp/Net/EndPointManager.cs @@ -84,6 +84,8 @@ namespace WebSocketSharp.Net var pref = new HttpListenerPrefix (uriPrefix); var addr = convertToIPAddress (pref.Host); + if (!addr.IsLocal ()) + throw new HttpListenerException (87, "Includes an invalid host."); var port = pref.Port; @@ -94,26 +96,12 @@ namespace WebSocketSharp.Net if (path.IndexOf ("//", StringComparison.Ordinal) != -1) throw new HttpListenerException (87, "Includes an invalid path."); - // Listens on all the interfaces if host name cannot be parsed by IPAddress. getEndPointListener (addr, port, pref.IsSecure, listener).AddPrefix (pref, listener); } private static IPAddress convertToIPAddress (string hostname) { - if (hostname == "*" || hostname == "+") - return IPAddress.Any; - - IPAddress addr; - if (IPAddress.TryParse (hostname, out addr)) - return addr; - - try { - var host = Dns.GetHostEntry (hostname); - return host != null ? host.AddressList[0] : IPAddress.Any; - } - catch { - return IPAddress.Any; - } + return hostname == "*" || hostname == "+" ? IPAddress.Any : hostname.ToIPAddress (); } private static EndPointListener getEndPointListener (