From c0e3cee6576f8a0ac3a20dd072df11ad637d3233 Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Wed, 3 Feb 2021 12:41:23 -0800 Subject: [PATCH] dns.mitm: allow nullptr for port string (closes #1352) --- .../source/dns_mitm/dnsmitm_resolver_impl.cpp | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/stratosphere/ams_mitm/source/dns_mitm/dnsmitm_resolver_impl.cpp b/stratosphere/ams_mitm/source/dns_mitm/dnsmitm_resolver_impl.cpp index c8408e276..a15bf5f1c 100644 --- a/stratosphere/ams_mitm/source/dns_mitm/dnsmitm_resolver_impl.cpp +++ b/stratosphere/ams_mitm/source/dns_mitm/dnsmitm_resolver_impl.cpp @@ -111,10 +111,12 @@ namespace ams::mitm::socket::resolver { R_UNLESS(GetRedirectedHostByName(std::addressof(redirect_addr), hostname), sm::mitm::ResultShouldForwardToSession()); u16 port = 0; - for (const char *cur = reinterpret_cast(srv.GetPointer()); *cur != 0; ++cur) { - AMS_ABORT_UNLESS(std::isdigit(static_cast(*cur))); - port *= 10; - port += *cur - '0'; + if (srv.GetPointer() != nullptr) { + for (const char *cur = reinterpret_cast(srv.GetPointer()); *cur != 0; ++cur) { + AMS_ABORT_UNLESS(std::isdigit(static_cast(*cur))); + port *= 10; + port += *cur - '0'; + } } LogDebug("[%016lx]: Redirecting %s:%u to %u.%u.%u.%u\n", this->client_info.program_id.value, hostname, port, (redirect_addr >> 0) & 0xFF, (redirect_addr >> 8) & 0xFF, (redirect_addr >> 16) & 0xFF, (redirect_addr >> 24) & 0xFF); @@ -162,10 +164,12 @@ namespace ams::mitm::socket::resolver { R_UNLESS(GetRedirectedHostByName(std::addressof(redirect_addr), hostname), sm::mitm::ResultShouldForwardToSession()); u16 port = 0; - for (const char *cur = reinterpret_cast(srv.GetPointer()); *cur != 0; ++cur) { - AMS_ABORT_UNLESS(std::isdigit(static_cast(*cur))); - port *= 10; - port += *cur - '0'; + if (srv.GetPointer() != nullptr) { + for (const char *cur = reinterpret_cast(srv.GetPointer()); *cur != 0; ++cur) { + AMS_ABORT_UNLESS(std::isdigit(static_cast(*cur))); + port *= 10; + port += *cur - '0'; + } } LogDebug("[%016lx]: Redirecting %s:%u to %u.%u.%u.%u\n", this->client_info.program_id.value, hostname, port, (redirect_addr >> 0) & 0xFF, (redirect_addr >> 8) & 0xFF, (redirect_addr >> 16) & 0xFF, (redirect_addr >> 24) & 0xFF);