diff --git a/src/core/libraries/network/ssl2.cpp b/src/core/libraries/network/ssl2.cpp index 0b408d094..3a7fd71e5 100644 --- a/src/core/libraries/network/ssl2.cpp +++ b/src/core/libraries/network/ssl2.cpp @@ -114,7 +114,13 @@ int PS4_SYSV_ABI sceSslFreeCaCerts(s32 ssl_ctx_id, OrbisSslCaCerts* certs) { if (certs == nullptr) { return ORBIS_SSL_ERROR_INVALID_ARGUMENT; } - delete (certs->certs); + if (certs->certs != nullptr) { + for (s32 data = 0; data < certs->num; data++) { + free(certs->certs[data].ptr); + } + delete (certs->certs); + } + // delete (certs->pool); return ORBIS_OK; } @@ -139,7 +145,12 @@ int PS4_SYSV_ABI sceSslGetCaCerts(s32 ssl_ctx_id, OrbisSslCaCerts* certs) { if (certs == nullptr) { return ORBIS_SSL_ERROR_INVALID_ARGUMENT; } - certs->certs = new OrbisSslData{nullptr, 0}; + // Allocate a buffer to store dummy data in. + const char* dummy_data = "dummy"; + u64 dummy_length = strlen(dummy_data) + 1; + char* data = static_cast(malloc(dummy_length)); + strncpy(data, dummy_data, dummy_length); + certs->certs = new OrbisSslData{data, dummy_length}; certs->num = 1; certs->pool = nullptr; return ORBIS_OK;