summaryrefslogtreecommitdiff
path: root/src/settings.cpp
diff options
context:
space:
mode:
authorSilarn <jrim@rimpo.org>2019-02-06 00:56:48 -0600
committerSilarn <jrim@rimpo.org>2019-02-18 21:31:20 -0600
commit3f86a94ff73914460db72c1f20eca075de8caea6 (patch)
tree21f7a7c4598301f236971d21f134c5185d194d6e /src/settings.cpp
parent8bc9db23d98ae454899791af9e0fbc0bab4d0b15 (diff)
Freeing the credential object when there's no result causes overruns
Diffstat (limited to 'src/settings.cpp')
-rw-r--r--src/settings.cpp2
1 files changed, 1 insertions, 1 deletions
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;
}