diff options
author | George Hazan <george.hazan@gmail.com> | 2024-01-28 18:50:38 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2024-01-28 18:50:38 +0300 |
commit | 5c115e80b1745137cf9df5a9eddfceab2f217a11 (patch) | |
tree | a6822d18f5c09afd1d6fed46dd0183e5e4cd517c | |
parent | 8dd25fa2937b260430eef88c1d6ebcc7b162020a (diff) |
USERINFO validator
-rw-r--r-- | include/m_chat_int.h | 11 | ||||
-rw-r--r-- | src/mir_app/src/srmm_base.cpp | 5 |
2 files changed, 14 insertions, 2 deletions
diff --git a/include/m_chat_int.h b/include/m_chat_int.h index 902af190f1..3cbe21e2bb 100644 --- a/include/m_chat_int.h +++ b/include/m_chat_int.h @@ -79,11 +79,20 @@ class CMsgDialog; struct USERINFO : public MZeroedObject, public MNonCopyable
{
+ ~USERINFO() {
+ iSignature = 0;
+ }
+
wchar_t* pszUID;
wchar_t* pszNick;
+ uint32_t iSignature = GC_FAKE_EVENT;
uint16_t Status;
- int iStatusEx;
uint16_t ContactStatus;
+ int iStatusEx;
+
+ bool isValid() const {
+ return iSignature == GC_FAKE_EVENT;
+ }
};
struct MIR_APP_EXPORT GCModuleInfoBase : public MZeroedObject, public MNonCopyable
diff --git a/src/mir_app/src/srmm_base.cpp b/src/mir_app/src/srmm_base.cpp index b2abb4e2dd..8c520380f2 100644 --- a/src/mir_app/src/srmm_base.cpp +++ b/src/mir_app/src/srmm_base.cpp @@ -615,8 +615,11 @@ INT_PTR CSrmmBaseDialog::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam) if (dis->CtlID == IDC_SRMM_NICKLIST && dis->itemID != LB_ERR) {
UINT_PTR iData = m_nickList.GetItemData(dis->itemID);
if (iData != LB_ERR) {
- if (auto *ui = (USERINFO *)iData)
+ if (auto *ui = (USERINFO *)iData) {
+ if (!ui->isValid())
+ DebugBreak();
DrawNickList(ui, dis);
+ }
return TRUE;
}
}
|