]> git.saurik.com Git - apple/security.git/blobdiff - OSX/sec/SOSCircle/SecureObjectSync/SOSGenCount.c
Security-57740.1.18.tar.gz
[apple/security.git] / OSX / sec / SOSCircle / SecureObjectSync / SOSGenCount.c
index 4c2d6adf929f3024cf1397cf1390a2b577417729..fb8d8518f495ae5044a2e13bbd52aaa00ff14636 100644 (file)
@@ -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);
     }