From 93845ad2e34caace387c269d1ceee7bb811a7d36 Mon Sep 17 00:00:00 2001 From: Guilherme Lawless Date: Wed, 9 Sep 2020 17:12:48 +0100 Subject: [PATCH] Recognize IPv4-mapped loopback addresses (#2912) Address `::ffff:127.0.0.1` isn't currently detected as loopback, which issues the config warning about binding to a non-local address. Tested `::1, ::ffff:127.0.0.1, ::ffff:0.0.0.0`, only the third one produced the warning. Thanks to Jav on discord for the notice. --- nano/rpc/rpc.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nano/rpc/rpc.cpp b/nano/rpc/rpc.cpp index 5cfdebc3..a1213945 100644 --- a/nano/rpc/rpc.cpp +++ b/nano/rpc/rpc.cpp @@ -32,7 +32,8 @@ nano::rpc::~rpc () void nano::rpc::start () { auto endpoint (boost::asio::ip::tcp::endpoint (boost::asio::ip::make_address_v6 (config.address), config.port)); - if (!endpoint.address ().is_loopback () && config.enable_control) + bool const is_loopback = (endpoint.address ().is_loopback () || (endpoint.address ().to_v6 ().is_v4_mapped () && boost::asio::ip::make_address_v4 (boost::asio::ip::v4_mapped, endpoint.address ().to_v6 ()).is_loopback ())); + if (!is_loopback && config.enable_control) { auto warning = boost::str (boost::format ("WARNING: control-level RPCs are enabled on non-local address %1%, potentially allowing wallet access outside local computer") % endpoint.address ().to_string ()); std::cout << warning << std::endl;