Merge pull request #11083 from sepalani/bba-check

BBA/BuiltIn: Fix a crash during network stack exhaustion
This commit is contained in:
Admiral H. Curtiss 2022-09-24 20:30:46 +02:00 committed by GitHub
commit f106bc150a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 1 deletions

View File

@ -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 ||
@ -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;