summaryrefslogtreecommitdiff
path: root/protocols/Skype/src/skype_database.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Skype/src/skype_database.cpp')
-rw-r--r--protocols/Skype/src/skype_database.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/protocols/Skype/src/skype_database.cpp b/protocols/Skype/src/skype_database.cpp
index d94528c5f4..f087f96412 100644
--- a/protocols/Skype/src/skype_database.cpp
+++ b/protocols/Skype/src/skype_database.cpp
@@ -9,27 +9,26 @@ bool CSkypeProto::IsMessageInDB(HANDLE hContact, DWORD timestamp, const char *gu
{
DBEVENTINFO dbei = { sizeof(dbei) };
dbei.cbBlob = ::db_event_getBlobSize(hDbEvent);
- dbei.pBlob = (PBYTE)::mir_alloc(dbei.cbBlob);
+ if (dbei.cbBlob < 32)
+ continue;
+
+ mir_ptr<BYTE> blob((PBYTE)::mir_alloc(dbei.cbBlob));
+ dbei.pBlob = blob;
::db_event_get(hDbEvent, &dbei);
if (dbei.timestamp < timestamp)
- {
- ::mir_free(dbei.pBlob);
break;
- }
int sendFlag = dbei.flags & DBEF_SENT;
if (dbei.eventType == EVENTTYPE_MESSAGE && sendFlag == flag)
{
if (::memcmp(&dbei.pBlob[dbei.cbBlob - 32], guid, 32) == 0)
{
- ::mir_free(dbei.pBlob);
result = true;
break;
}
}
- ::mir_free(dbei.pBlob);
hDbEvent = ::db_event_prev(hDbEvent);
}