Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #11083 from sepalani/bba-check
BBA/BuiltIn: Fix a crash during network stack exhaustion
  • Loading branch information
AdmiralCurtiss committed Sep 24, 2022
2 parents 6397555 + 34858e9 commit f106bc1
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion Source/Core/Core/HW/EXI/BBA/BuiltIn.cpp
Expand Up @@ -510,7 +510,7 @@ void CEXIETHERNET::BuiltInBBAInterface::HandleUDPFrame(const Common::UDPPacket&
void CEXIETHERNET::BuiltInBBAInterface::HandleUPnPClient()
{
StackRef* ref = GetAvailableSlot(0);
if (m_upnp_httpd.accept(ref->tcp_socket) != sf::Socket::Done)
if (ref == nullptr || m_upnp_httpd.accept(ref->tcp_socket) != sf::Socket::Done)
return;

if (ref->tcp_socket.GetPeerName(&ref->from) != sf::Socket::Status::Done ||
Expand All @@ -520,6 +520,13 @@ void CEXIETHERNET::BuiltInBBAInterface::HandleUPnPClient()
return;
}

if (m_current_ip == ref->from.sin_addr.s_addr)
{
ref->tcp_socket.disconnect();
WARN_LOG_FMT(SP1, "Ignoring UPnP request to itself");
return;
}

ref->delay = GetTickCountStd();
ref->ip = ref->from.sin_addr.s_addr;
ref->local = ref->to.sin_port;
Expand Down

0 comments on commit f106bc1

Please sign in to comment.