From 3f86a94ff73914460db72c1f20eca075de8caea6 Mon Sep 17 00:00:00 2001 From: Silarn Date: Wed, 6 Feb 2019 00:56:48 -0600 Subject: Freeing the credential object when there's no result causes overruns --- src/settings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/settings.cpp') diff --git a/src/settings.cpp b/src/settings.cpp index 6be5489d..64a39e12 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -216,6 +216,7 @@ QString Settings::deObfuscate(const QString key) if (CredReadW(keyData, 1, 0, &creds)) { wchar_t *charData = (wchar_t *)creds->CredentialBlob; result = QString::fromWCharArray(charData, creds->CredentialBlobSize / sizeof(wchar_t)); + CredFree(creds); } else { if (GetLastError() != ERROR_NOT_FOUND) { wchar_t buffer[256]; @@ -225,7 +226,6 @@ QString Settings::deObfuscate(const QString key) qCritical() << "Retrieving encrypted data failed:" << buffer; } } - CredFree(creds); delete[] keyData; return result; } -- cgit v1.3.1