Bsd: Fix NullReferenceException in BsdSockAddr.FromIPEndPoint() (#3652)

* Bsd: Fix NullReferenceException in BsdSockAddr.FromIPEndPoint()

Allows "Victor Vran Overkill Edition" to boot with guest internet access enabled.
Thanks to EmulationFanatic for testing this for me!

* Bsd: Return proper error code if RemoteEndPoint is null

* Remove whitespace from empty line

Co-authored-by: gdkchan <gab.dark.100@gmail.com>

Co-authored-by: gdkchan <gab.dark.100@gmail.com>
This commit is contained in:
TSRBerry 2022-09-02 00:04:01 +02:00 committed by GitHub
parent 38275f9056
commit 5ff5fe47ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -573,14 +573,18 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd
LinuxError errno = LinuxError.EBADF; LinuxError errno = LinuxError.EBADF;
ISocket socket = _context.RetrieveSocket(socketFd); ISocket socket = _context.RetrieveSocket(socketFd);
if (socket != null) if (socket != null)
{ {
errno = LinuxError.SUCCESS; errno = LinuxError.ENOTCONN;
WriteSockAddr(context, bufferPosition, socket, true); if (socket.RemoteEndPoint != null)
WriteBsdResult(context, 0, errno); {
context.ResponseData.Write(Unsafe.SizeOf<BsdSockAddr>()); errno = LinuxError.SUCCESS;
WriteSockAddr(context, bufferPosition, socket, true);
WriteBsdResult(context, 0, errno);
context.ResponseData.Write(Unsafe.SizeOf<BsdSockAddr>());
}
} }
return WriteBsdResult(context, 0, errno); return WriteBsdResult(context, 0, errno);
@ -903,4 +907,4 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd
return WriteBsdResult(context, newSockFd, errno); return WriteBsdResult(context, newSockFd, errno);
} }
} }
} }