X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/ce3c8656732c924baf7e88df75eab50891bdc471..fa7225c82381bac4432a6edf16f53b5370238d85:/OSX/sec/SOSCircle/SecureObjectSync/SOSGenCount.c diff --git a/OSX/sec/SOSCircle/SecureObjectSync/SOSGenCount.c b/OSX/sec/SOSCircle/SecureObjectSync/SOSGenCount.c index 4c2d6adf..fb8d8518 100644 --- a/OSX/sec/SOSCircle/SecureObjectSync/SOSGenCount.c +++ b/OSX/sec/SOSCircle/SecureObjectSync/SOSGenCount.c @@ -87,13 +87,30 @@ SOSGenCountRef SOSGenerationCopy(SOSGenCountRef gen) { return CFNumberCreate(NULL, kCFNumberSInt64Type, &value); } -bool SOSGenerationIsOlder(SOSGenCountRef current, SOSGenCountRef proposed) { - return CFNumberCompare(current, proposed, NULL) == kCFCompareGreaterThan; +// Is current older than proposed? +bool SOSGenerationIsOlder(SOSGenCountRef older, SOSGenCountRef newer) { + switch(CFNumberCompare(older, newer, NULL)) { + case kCFCompareLessThan: return true; + case kCFCompareEqualTo: return false; + case kCFCompareGreaterThan: return false; + } + return false; } +// Is current older than proposed? +static bool SOSGenerationIsOlderOrEqual(SOSGenCountRef older, SOSGenCountRef newer) { + switch(CFNumberCompare(older, newer, NULL)) { + case kCFCompareLessThan: return true; + case kCFCompareEqualTo: return true; + case kCFCompareGreaterThan: return false; + } + return false; +} + + SOSGenCountRef SOSGenerationCreateWithBaseline(SOSGenCountRef reference) { SOSGenCountRef retval = SOSGenerationCreate(); - if(!SOSGenerationIsOlder(retval, reference)) { + if(SOSGenerationIsOlderOrEqual(retval, reference)) { CFReleaseNull(retval); retval = SOSGenerationIncrementAndCreate(reference); }