Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6b7af605 authored by Elliott Hughes's avatar Elliott Hughes
Browse files

Use InetAddress.isNumeric.

This code is trying to detect anything equivalent to localhost, but without
accidentally causing a DNS lookup.

Bug: 3073384
Change-Id: Ib611c8ca46059e00b07fc4b94d4af777217da1fb
parent f034f87d
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -299,15 +299,18 @@ public final class Proxy {
            final URI uri = URI.create(url);
            final String host = uri.getHost();
            if (host != null) {
                // TODO: InetAddress.isLoopbackAddress should be used to check
                // for localhost. However no public factory methods exist which
                // can be used without triggering DNS lookup if host is not localhost.
                if (host.equalsIgnoreCase("localhost") ||
                        host.equals("127.0.0.1") ||
                        host.equals("[::1]")) {
                if (host.equalsIgnoreCase("localhost")) {
                    return true;
                }
                // Check we have a numeric address so we don't cause a DNS lookup in getByName.
                if (InetAddress.isNumeric(host)) {
                    if (InetAddress.getByName(host).isLoopbackAddress()) {
                        return true;
                    }
                }
            }
        } catch (UnknownHostException ignored) {
            // Can't happen for a numeric address (InetAddress.getByName).
        } catch (IllegalArgumentException iex) {
            // Ignore (URI.create)
        }