summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/Db3x_mmap/src/dbcrypt.cpp16
-rw-r--r--plugins/Db3x_mmap/src/dbintf.h1
-rw-r--r--plugins/Db3x_mmap/src/ui.cpp6
3 files changed, 16 insertions, 7 deletions
diff --git a/plugins/Db3x_mmap/src/dbcrypt.cpp b/plugins/Db3x_mmap/src/dbcrypt.cpp
index e6bb7e704b..4193316d17 100644
--- a/plugins/Db3x_mmap/src/dbcrypt.cpp
+++ b/plugins/Db3x_mmap/src/dbcrypt.cpp
@@ -161,11 +161,9 @@ LBL_SetNewKey:
if (dbv.cpbVal != (WORD)iKeyLength)
goto LBL_SetNewKey;
- if (!m_crypto->setKey(dbv.pbVal, iKeyLength)) {
+ if (!m_crypto->setKey(dbv.pbVal, iKeyLength))
if (!EnterPassword(dbv.pbVal, iKeyLength)) // password protected?
return 4;
- m_bUsesPassword = true;
- }
FreeVariant(&dbv);
}
@@ -198,3 +196,15 @@ void CDb3Mmap::StoreKey()
SecureZeroMemory(pKey, iKeyLength);
}
+
+void CDb3Mmap::SetPassword(LPCTSTR ptszPassword)
+{
+ if (ptszPassword == NULL || *ptszPassword == 0) {
+ m_bUsesPassword = false;
+ m_crypto->setPassword(NULL);
+ }
+ else {
+ m_bUsesPassword = true;
+ m_crypto->setPassword(ptrA(mir_utf8encodeT(ptszPassword)));
+ }
+}
diff --git a/plugins/Db3x_mmap/src/dbintf.h b/plugins/Db3x_mmap/src/dbintf.h
index 9415524871..1d5fae78a6 100644
--- a/plugins/Db3x_mmap/src/dbintf.h
+++ b/plugins/Db3x_mmap/src/dbintf.h
@@ -300,6 +300,7 @@ struct CDb3Mmap : public CDb3Base
~CDb3Mmap();
void StoreKey(void);
+ void SetPassword(const TCHAR *ptszPassword);
protected:
virtual DWORD GetSettingsGroupOfsByModuleNameOfs(DBContact *dbc,DWORD ofsContact,DWORD ofsModuleName);
diff --git a/plugins/Db3x_mmap/src/ui.cpp b/plugins/Db3x_mmap/src/ui.cpp
index 1296808fcf..fa22d1008b 100644
--- a/plugins/Db3x_mmap/src/ui.cpp
+++ b/plugins/Db3x_mmap/src/ui.cpp
@@ -127,6 +127,7 @@ bool CDb3Mmap::EnterPassword(const BYTE *pKey, const size_t keyLen)
m_crypto->setPassword(ptrA(mir_utf8encodeT(param.newPass)));
if (m_crypto->setKey(pKey, keyLen)) {
+ m_bUsesPassword = true;
SecureZeroMemory(&param, sizeof(param));
return true;
}
@@ -233,10 +234,7 @@ static INT_PTR ChangePassword(void* obj, LPARAM, LPARAM)
CDb3Mmap *db = (CDb3Mmap*)obj;
DlgChangePassParam param = { db };
if (IDOK == DialogBoxParam(g_hInst, MAKEINTRESOURCE(db->usesPassword() ? IDD_CHANGEPASS : IDD_NEWPASS), 0, sttChangePassword, (LPARAM)&param)) {
- if (param.newPass[0])
- db->m_crypto->setPassword(ptrA(mir_utf8encodeT(param.newPass)));
- else
- db->m_crypto->setPassword(NULL);
+ db->SetPassword(param.newPass);
db->StoreKey();
}