From 828535640691c97027c9844a8e84b4c34d4720bd Mon Sep 17 00:00:00 2001 From: MikalaiR Date: Sun, 2 Aug 2015 18:55:37 +0000 Subject: pass_ptrA, pass_ptrW and pass_ptrT git-svn-id: http://svn.miranda-ng.org/main/trunk@14822 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/SkypeWeb/src/skype_db.h | 29 ++++++++++++++++++++++++----- protocols/SkypeWeb/src/skype_login.cpp | 2 +- protocols/SkypeWeb/src/skype_options.cpp | 2 +- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/protocols/SkypeWeb/src/skype_db.h b/protocols/SkypeWeb/src/skype_db.h index f4ea89184b..d42d7f40b4 100644 --- a/protocols/SkypeWeb/src/skype_db.h +++ b/protocols/SkypeWeb/src/skype_db.h @@ -33,20 +33,39 @@ enum SKYPE_DB_EVENT_TYPE #define SKYPE_SETTINGS_PASSWORD "Password" #define SKYPE_SETTINGS_GROUP "DefaultGroup" -class pass_ptr +class pass_ptrA { char* data; public: - __inline explicit pass_ptr() : data(NULL) {} - __inline explicit pass_ptr(char* _p) : data(_p) {} - __inline ~pass_ptr() { zero(); mir_free(data); } + __inline explicit pass_ptrA() : data(NULL) {} + __inline explicit pass_ptrA(char* _p) : data(_p) {} + __inline ~pass_ptrA() { zero(); mir_free(data); } __inline char* operator = (char * _p) { if (data){ zero(); mir_free(data); } data = _p; return data; } __inline char* operator->() const { return data; } __inline operator char *() const { return data; } __inline operator INT_PTR() const { return (INT_PTR)data; } __inline char * detach() { char *res = data; data = NULL; return res; } - __inline void zero(){ if (data) SecureZeroMemory(data, mir_strlen(data)); } + __inline void zero() { if (data) SecureZeroMemory(data, mir_strlen(data)); } }; +class pass_ptrW +{ + WCHAR* data; + +public: + __inline explicit pass_ptrW() : data(NULL) {} + __inline explicit pass_ptrW(WCHAR* _p) : data(_p) {} + __inline ~pass_ptrW() { zero(); mir_free(data); } + __inline WCHAR* operator = (WCHAR * _p) { if (data){ zero(); mir_free(data); } data = _p; return data; } + __inline WCHAR* operator->() const { return data; } + __inline operator WCHAR *() const { return data; } + __inline operator INT_PTR() const { return (INT_PTR)data; } + __inline WCHAR * detach() { WCHAR *res = data; data = NULL; return res; } + __inline void zero() { if (data) SecureZeroMemory(data, (mir_wstrlen(data)*sizeof(TCHAR))); } +}; + +typedef pass_ptrW pass_ptrT; + + #endif //_SKYPE_DB_H_ \ No newline at end of file diff --git a/protocols/SkypeWeb/src/skype_login.cpp b/protocols/SkypeWeb/src/skype_login.cpp index bec1edbcff..2132d7a7ad 100644 --- a/protocols/SkypeWeb/src/skype_login.cpp +++ b/protocols/SkypeWeb/src/skype_login.cpp @@ -26,7 +26,7 @@ void CSkypeProto::Login() requestQueue->Start(); int tokenExpires(getDword("TokenExpiresIn", 0)); ptrA szLogin(getStringA(SKYPE_SETTINGS_ID)); - pass_ptr szPassword(getStringA(SKYPE_SETTINGS_PASSWORD)); + pass_ptrA szPassword(getStringA(SKYPE_SETTINGS_PASSWORD)); if (szLogin == NULL || szPassword == NULL) { ProtoBroadcastAck(NULL, ACKTYPE_LOGIN, ACKRESULT_FAILED, NULL, LOGIN_ERROR_UNKNOWN); diff --git a/protocols/SkypeWeb/src/skype_options.cpp b/protocols/SkypeWeb/src/skype_options.cpp index fb59d1e157..dc408ca9e8 100644 --- a/protocols/SkypeWeb/src/skype_options.cpp +++ b/protocols/SkypeWeb/src/skype_options.cpp @@ -54,7 +54,7 @@ void CSkypeOptionsMain::OnApply() { ptrA szNewSkypename(m_skypename.GetTextA()), szOldSkypename(m_proto->getStringA(SKYPE_SETTINGS_ID)); - pass_ptr szNewPassword(m_password.GetTextA()), + pass_ptrA szNewPassword(m_password.GetTextA()), szOldPassword(m_proto->getStringA("Password")); if (mir_strcmpi(szNewSkypename, szOldSkypename) || mir_strcmp(szNewPassword, szOldPassword)) -- cgit v1.2.3