You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by sh...@apache.org on 2017/01/10 23:35:25 UTC

ios commit: CB-12341 - Possible crash in [CDVUserAgentUtil releaseLock:]

Repository: cordova-ios
Updated Branches:
  refs/heads/master 7ec3bdb46 -> 6df46b7ba


CB-12341 - Possible crash in [CDVUserAgentUtil releaseLock:]


Project: http://git-wip-us.apache.org/repos/asf/cordova-ios/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-ios/commit/6df46b7b
Tree: http://git-wip-us.apache.org/repos/asf/cordova-ios/tree/6df46b7b
Diff: http://git-wip-us.apache.org/repos/asf/cordova-ios/diff/6df46b7b

Branch: refs/heads/master
Commit: 6df46b7bad8da2f49560389a38a6d3929fabfe01
Parents: 7ec3bdb
Author: Shazron Abdullah <sh...@apache.org>
Authored: Tue Jan 10 15:39:24 2017 -0800
Committer: Shazron Abdullah <sh...@apache.org>
Committed: Tue Jan 10 15:39:24 2017 -0800

----------------------------------------------------------------------
 CordovaLib/Classes/Public/CDVUserAgentUtil.m |  2 +-
 tests/CordovaLibTests/CDVUserAgentTest.m     | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/6df46b7b/CordovaLib/Classes/Public/CDVUserAgentUtil.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/Public/CDVUserAgentUtil.m b/CordovaLib/Classes/Public/CDVUserAgentUtil.m
index b589e1f..b17107e 100644
--- a/CordovaLib/Classes/Public/CDVUserAgentUtil.m
+++ b/CordovaLib/Classes/Public/CDVUserAgentUtil.m
@@ -90,7 +90,7 @@ static NSMutableArray* gPendingSetUserAgentBlocks = nil;
 
 + (void)releaseLock:(NSInteger*)lockToken
 {
-    if (*lockToken == 0) {
+    if (lockToken == nil || *lockToken == 0) {
         return;
     }
     NSAssert(gCurrentLockToken == *lockToken, @"Got token %ld, expected %ld", (long)*lockToken, (long)gCurrentLockToken);

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/6df46b7b/tests/CordovaLibTests/CDVUserAgentTest.m
----------------------------------------------------------------------
diff --git a/tests/CordovaLibTests/CDVUserAgentTest.m b/tests/CordovaLibTests/CDVUserAgentTest.m
index a028158..d97ae47 100644
--- a/tests/CordovaLibTests/CDVUserAgentTest.m
+++ b/tests/CordovaLibTests/CDVUserAgentTest.m
@@ -21,6 +21,7 @@
 
 #import "CDVWebViewTest.h"
 #import <Cordova/CDVViewController.h>
+#import <Cordova/CDVUserAgentUtil.h>
 #import "AppDelegate.h"
 
 @interface CDVUserAgentTestViewController : UIViewController
@@ -159,4 +160,22 @@
     XCTAssertTrue([cordovaUserAgent2 hasPrefix:rootVc.vc2.baseUserAgent], @"Cordova user agent should be based on base user agent.");
 }
 
+- (void)testUserAgentReleaseLock
+{
+    __block NSInteger myLockToken;
+
+    [CDVUserAgentUtil acquireLock:^(NSInteger lockToken) {
+        myLockToken = lockToken;
+        [CDVUserAgentUtil releaseLock:&myLockToken];
+
+        NSInteger nullInteger = 0;
+        // test releasing NULL token
+        [CDVUserAgentUtil releaseLock:&nullInteger];
+        NSInteger* ni = nil;
+        // test releasing nil object
+        [CDVUserAgentUtil releaseLock:ni];
+    }];
+}
+
+
 @end


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org