From ac6165b63bcad4b564f952371361619d671eb059 Mon Sep 17 00:00:00 2001 From: 7ayun Date: Mon, 25 May 2026 23:00:00 +0900 Subject: [PATCH] fix: use deep copy for SSL key to prevent use-after-free QByteArray::fromRawData() creates a shallow copy that references the BIO buffer directly. After BIO_free(bio) is called, the buffer is freed, leaving m_CachedSslKey holding a dangling pointer. Replace fromRawData() with QByteArray() constructor to perform a deep copy before the BIO is freed. This issue was fixed in upstream moonlight-qt in commit 1eb76bbd. --- app/backend/identitymanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/backend/identitymanager.cpp b/app/backend/identitymanager.cpp index 08bfcc17a..f7b9ea584 100644 --- a/app/backend/identitymanager.cpp +++ b/app/backend/identitymanager.cpp @@ -173,7 +173,7 @@ IdentityManager::getSslKey() BUF_MEM* mem; BIO_get_mem_ptr(bio, &mem); - m_CachedSslKey = QSslKey(QByteArray::fromRawData(mem->data, (int)mem->length), QSsl::Rsa); + m_CachedSslKey = QSslKey(QByteArray(mem->data, (int)mem->length), QSsl::Rsa); BIO_free(bio); EVP_PKEY_free(pk);