summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2024-01-28 18:50:38 +0300
committerGeorge Hazan <george.hazan@gmail.com>2024-01-28 18:50:38 +0300
commit5c115e80b1745137cf9df5a9eddfceab2f217a11 (patch)
treea6822d18f5c09afd1d6fed46dd0183e5e4cd517c
parent8dd25fa2937b260430eef88c1d6ebcc7b162020a (diff)
USERINFO validator
-rw-r--r--include/m_chat_int.h11
-rw-r--r--src/mir_app/src/srmm_base.cpp5
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;
}
}