fix large socket addin (ipv6?)

This commit is contained in:
Maufeat 2026-02-07 08:43:59 +01:00
parent 47603bd5cc
commit bae9ebb1b6
2 changed files with 7 additions and 6 deletions

View File

@ -629,7 +629,7 @@ Errno BSD::BindImpl(s32 fd, std::span<const u8> addr) {
if (!IsFileDescriptorValid(fd)) {
return Errno::BADF;
}
ASSERT(addr.size() == sizeof(SockAddrIn));
ASSERT(addr.size() >= sizeof(SockAddrIn));
auto addr_in = GetValue<SockAddrIn>(addr);
return Translate(file_descriptors[fd]->socket->Bind(Translate(addr_in)));
@ -640,7 +640,7 @@ Errno BSD::ConnectImpl(s32 fd, std::span<const u8> addr) {
return Errno::BADF;
}
UNIMPLEMENTED_IF(addr.size() != sizeof(SockAddrIn));
UNIMPLEMENTED_IF(addr.size() < sizeof(SockAddrIn));
auto addr_in = GetValue<SockAddrIn>(addr);
const Errno result = Translate(file_descriptors[fd]->socket->Connect(Translate(addr_in)));
@ -874,7 +874,7 @@ std::pair<s32, Errno> BSD::RecvFromImpl(s32 fd, u32 flags, std::vector<u8>& mess
if (ret < 0) {
addr.clear();
} else {
ASSERT(addr.size() == sizeof(SockAddrIn));
ASSERT(addr.size() >= sizeof(SockAddrIn));
const SockAddrIn result = Translate(addr_in);
PutValue(addr, result);
}
@ -899,7 +899,7 @@ std::pair<s32, Errno> BSD::SendToImpl(s32 fd, u32 flags, std::span<const u8> mes
Network::SockAddrIn addr_in;
Network::SockAddrIn* p_addr_in = nullptr;
if (!addr.empty()) {
ASSERT(addr.size() == sizeof(SockAddrIn));
ASSERT(addr.size() >= sizeof(SockAddrIn));
auto guest_addr_in = GetValue<SockAddrIn>(addr);
addr_in = Translate(guest_addr_in);
p_addr_in = &addr_in;

View File

@ -265,8 +265,9 @@ PollEvents Translate(Network::PollEvents flags) {
}
Network::SockAddrIn Translate(SockAddrIn value) {
if (value.len != 0 && value.len != sizeof(value) && value.len != 6) {
LOG_WARNING(Service, "Unexpected SockAddrIn len={}, expected 0, {}, or 6",
if (value.len != 0 && value.len != sizeof(value) && value.len != 6 &&
value.len < sizeof(value)) {
LOG_WARNING(Service, "Unexpected SockAddrIn len={}, expected 0, {}, 6, or larger",
value.len, sizeof(value));
}