From e2751e6ffc0c88e2c3b58418d708daee60b3c135 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 5 Apr 2012 17:49:08 -0700 Subject: [PATCH] protect decrementActivityCount against integer underflow. --- AFNetworking/AFNetworkActivityIndicatorManager.m | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/AFNetworking/AFNetworkActivityIndicatorManager.m b/AFNetworking/AFNetworkActivityIndicatorManager.m index 32dbbe0..3e36ba6 100644 --- a/AFNetworking/AFNetworkActivityIndicatorManager.m +++ b/AFNetworking/AFNetworkActivityIndicatorManager.m @@ -111,7 +111,11 @@ static NSTimeInterval const kAFNetworkActivityIndicatorInvisibilityDelay = 0.25; - (void)decrementActivityCount { [self willChangeValueForKey:@"activityCount"]; - OSAtomicDecrement32((int32_t*)&_activityCount); + bool success; + do { + int32_t orig = _activityCount; + success = OSAtomicCompareAndSwap32(orig, MIN(orig - 1, orig), &_activityCount); + } while(!success); [self didChangeValueForKey:@"activityCount"]; [self updateNetworkActivityIndicatorVisibilityDelayed]; }