aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Services/Ssl/BuiltInCertificateManager.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2022-09-29 12:45:25 -0300
committerGitHub <noreply@github.com>2022-09-29 12:45:25 -0300
commitdbe43c17199a96e86175c9dd39d6062ce58cefb4 (patch)
tree32cf8f608eec84d86e45f05152438d5e43604952 /Ryujinx.HLE/HOS/Services/Ssl/BuiltInCertificateManager.cs
parentf502cfaf62d52decb5c74d42f33ce6643f62fc26 (diff)
Fix SSL GetCertificates with certificate ID set to All (#3727)1.1.282
* Fix SSL GetCertificates with certificate ID set to All * Fix last entry status value
Diffstat (limited to 'Ryujinx.HLE/HOS/Services/Ssl/BuiltInCertificateManager.cs')
-rw-r--r--Ryujinx.HLE/HOS/Services/Ssl/BuiltInCertificateManager.cs13
1 files changed, 11 insertions, 2 deletions
diff --git a/Ryujinx.HLE/HOS/Services/Ssl/BuiltInCertificateManager.cs b/Ryujinx.HLE/HOS/Services/Ssl/BuiltInCertificateManager.cs
index 70691e1b..a164c745 100644
--- a/Ryujinx.HLE/HOS/Services/Ssl/BuiltInCertificateManager.cs
+++ b/Ryujinx.HLE/HOS/Services/Ssl/BuiltInCertificateManager.cs
@@ -181,7 +181,11 @@ namespace Ryujinx.HLE.HOS.Services.Ssl
}
}
- public bool TryGetCertificates(ReadOnlySpan<CaCertificateId> ids, out CertStoreEntry[] entries)
+ public bool TryGetCertificates(
+ ReadOnlySpan<CaCertificateId> ids,
+ out CertStoreEntry[] entries,
+ out bool hasAllCertificates,
+ out int requiredSize)
{
lock (_lock)
{
@@ -190,7 +194,8 @@ namespace Ryujinx.HLE.HOS.Services.Ssl
throw new InvalidSystemResourceException(CertStoreTitleMissingErrorMessage);
}
- bool hasAllCertificates = false;
+ requiredSize = 0;
+ hasAllCertificates = false;
foreach (CaCertificateId id in ids)
{
@@ -205,12 +210,14 @@ namespace Ryujinx.HLE.HOS.Services.Ssl
if (hasAllCertificates)
{
entries = new CertStoreEntry[_certificates.Count];
+ requiredSize = (_certificates.Count + 1) * Unsafe.SizeOf<BuiltInCertificateInfo>();
int i = 0;
foreach (CertStoreEntry entry in _certificates.Values)
{
entries[i++] = entry;
+ requiredSize += (entry.Data.Length + 3) & ~3;
}
return true;
@@ -218,6 +225,7 @@ namespace Ryujinx.HLE.HOS.Services.Ssl
else
{
entries = new CertStoreEntry[ids.Length];
+ requiredSize = ids.Length * Unsafe.SizeOf<BuiltInCertificateInfo>();
for (int i = 0; i < ids.Length; i++)
{
@@ -227,6 +235,7 @@ namespace Ryujinx.HLE.HOS.Services.Ssl
}
entries[i] = entry;
+ requiredSize += (entry.Data.Length + 3) & ~3;
}
return true;