From 060c0369367ac64a36c280abe71f34a5bec66ce9 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 10 Oct 2012 08:43:21 -0400 Subject: [PATCH] ensure that object versions are properly "masked" to 48-bit integers --- OpenChange/MAPIStoreDBMessage.m | 3 ++- OpenChange/MAPIStoreDBMessageTable.m | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/OpenChange/MAPIStoreDBMessage.m b/OpenChange/MAPIStoreDBMessage.m index b337ea6be..f794a381b 100644 --- a/OpenChange/MAPIStoreDBMessage.m +++ b/OpenChange/MAPIStoreDBMessage.m @@ -91,7 +91,8 @@ [(SOGoMAPIDBMessage *) sogoObject reloadIfNeeded]; versionNbr = [properties objectForKey: @"version"]; if (versionNbr) - objectVersion = [versionNbr unsignedLongLongValue] >> 16; + objectVersion = (([versionNbr unsignedLongLongValue] >> 16) + & 0x0000ffffffffffffLL); else objectVersion = ULLONG_MAX; diff --git a/OpenChange/MAPIStoreDBMessageTable.m b/OpenChange/MAPIStoreDBMessageTable.m index 9f791d68a..e457b5ac8 100644 --- a/OpenChange/MAPIStoreDBMessageTable.m +++ b/OpenChange/MAPIStoreDBMessageTable.m @@ -62,7 +62,8 @@ static Class MAPIStoreDBMessageK = Nil; if ((uint32_t) res->ulPropTag == PidTagChangeNumber) { value = NSObjectFromMAPISPropValue (&res->lpProp); - cVersion = exchange_globcnt ([value unsignedLongLongValue] >> 16); + cVersion = exchange_globcnt (([value unsignedLongLongValue] >> 16) + & 0x0000ffffffffffffLL); version = [NSNumber numberWithUnsignedLongLong: cVersion]; [self logWithFormat: @"change number from oxcfxics: %.16lx", [value unsignedLongLongValue]]; [self logWithFormat: @" version: %.16lx", cVersion];