forked from Mirror/Ryujinx
nsd/ssl: Fix Resolve/ResolveEx and stub GetConnectionCount (#2208)
This commit is contained in:
parent
6cb22c9d38
commit
9575a7638a
4 changed files with 40 additions and 5 deletions
|
@ -1,4 +1,5 @@
|
|||
using Ryujinx.Common.Logging;
|
||||
using Ryujinx.Cpu;
|
||||
using Ryujinx.HLE.Exceptions;
|
||||
using Ryujinx.HLE.HOS.Services.Settings;
|
||||
using Ryujinx.HLE.HOS.Services.Sockets.Nsd.Manager;
|
||||
|
@ -135,9 +136,16 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Nsd
|
|||
long outputPosition = context.Request.ReceiveBuff[0].Position;
|
||||
long outputSize = context.Request.ReceiveBuff[0].Size;
|
||||
|
||||
ResultCode result = _fqdnResolver.ResolveEx(context, out ResultCode errorCode, out string resolvedAddress);
|
||||
ResultCode result = _fqdnResolver.ResolveEx(context, out _, out string resolvedAddress);
|
||||
|
||||
byte[] resolvedAddressBuffer = Encoding.UTF8.GetBytes(resolvedAddress + '\0');
|
||||
if (resolvedAddress.Length > outputSize)
|
||||
{
|
||||
return ResultCode.InvalidArgument;
|
||||
}
|
||||
|
||||
byte[] resolvedAddressBuffer = Encoding.UTF8.GetBytes(resolvedAddress);
|
||||
|
||||
MemoryHelper.FillWithZeros(context.Memory, outputPosition, (int)outputSize);
|
||||
|
||||
context.Memory.Write((ulong)outputPosition, resolvedAddressBuffer);
|
||||
|
||||
|
@ -153,7 +161,14 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Nsd
|
|||
|
||||
ResultCode result = _fqdnResolver.ResolveEx(context, out ResultCode errorCode, out string resolvedAddress);
|
||||
|
||||
byte[] resolvedAddressBuffer = Encoding.UTF8.GetBytes(resolvedAddress + '\0');
|
||||
if (resolvedAddress.Length > outputSize)
|
||||
{
|
||||
return ResultCode.InvalidArgument;
|
||||
}
|
||||
|
||||
byte[] resolvedAddressBuffer = Encoding.UTF8.GetBytes(resolvedAddress);
|
||||
|
||||
MemoryHelper.FillWithZeros(context.Memory, outputPosition, (int)outputSize);
|
||||
|
||||
context.Memory.Write((ulong)outputPosition, resolvedAddressBuffer);
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Nsd.Manager
|
|||
|
||||
context.Memory.Read((ulong)inputPosition, addressBuffer);
|
||||
|
||||
string address = Encoding.UTF8.GetString(addressBuffer);
|
||||
string address = Encoding.UTF8.GetString(addressBuffer).TrimEnd('\0');
|
||||
|
||||
resultCode = Resolve(context, address, out resolvedAddress);
|
||||
|
||||
|
|
|
@ -78,7 +78,12 @@ namespace Ryujinx.HLE.HOS.Services.Ssl.SslService
|
|||
long inputDataPosition = context.Request.SendBuff[0].Position;
|
||||
long inputDataSize = context.Request.SendBuff[0].Size;
|
||||
|
||||
uint transferredSize = 0;
|
||||
byte[] data = new byte[inputDataSize];
|
||||
|
||||
context.Memory.Read((ulong)inputDataPosition, data);
|
||||
|
||||
// NOTE: Tell the guest everything is transferred.
|
||||
uint transferredSize = (uint)inputDataSize;
|
||||
|
||||
context.ResponseData.Write(transferredSize);
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@ namespace Ryujinx.HLE.HOS.Services.Ssl.SslService
|
|||
{
|
||||
class ISslContext : IpcService
|
||||
{
|
||||
private uint _connectionCount;
|
||||
|
||||
private ulong _serverCertificateId;
|
||||
private ulong _clientCertificateId;
|
||||
|
||||
|
@ -17,6 +19,19 @@ namespace Ryujinx.HLE.HOS.Services.Ssl.SslService
|
|||
{
|
||||
MakeObject(context, new ISslConnection());
|
||||
|
||||
_connectionCount++;
|
||||
|
||||
return ResultCode.Success;
|
||||
}
|
||||
|
||||
[CommandHipc(3)]
|
||||
// GetConnectionCount() -> u32 count
|
||||
public ResultCode GetConnectionCount(ServiceCtx context)
|
||||
{
|
||||
context.ResponseData.Write(_connectionCount);
|
||||
|
||||
Logger.Stub?.PrintStub(LogClass.ServiceSsl, new { _connectionCount });
|
||||
|
||||
return ResultCode.Success;
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue