瀏覽代碼

Reset passcode on update or re-installation

(cherry picked from commit 5ea5cb97aabc1bb7670626e3cb0d5cb5631be4a7)
Felix Paul Kühne 9 年之前
父節點
當前提交
1fd4f74b70
共有 3 個文件被更改,包括 14 次插入2 次删除
  1. 1 0
      NEWS
  2. 1 0
      Sources/VLCConstants.h
  3. 12 2
      Sources/VLCKeychainCoordinator.m

+ 1 - 0
NEWS

@@ -6,6 +6,7 @@
 * Fixed issues unlocking the app when a passcode was never set
 * Fixed custom subtitles font sizes
 * Fixed UPnP playback on iOS 7
+* Note: when installing this update, a potentially configured passcode is reset.
 
 2.7.1:
 ------

+ 1 - 0
Sources/VLCConstants.h

@@ -13,6 +13,7 @@
 
 #define kVLCVersionCodename @"All Along the Watchtower"
 
+#define kVLCSettingPasscodeResetOnUpgrade @"kVLCSettingPasscodeResetOnUpgrade"
 #define kVLCSettingPasscodeOnKey @"PasscodeProtection"
 #define kVLCSettingPasscodeAllowTouchID @"AllowTouchID"
 #define kVLCSettingContinueAudioInBackgroundKey @"BackgroundAudioPlayback"

+ 12 - 2
Sources/VLCKeychainCoordinator.m

@@ -76,8 +76,18 @@ NSString *const VLCPasscode = @"org.videolan.vlc-ios.passcode";
 
 - (NSString *)_obtainPasscode
 {
-    NSString *passcode = [SSKeychain passwordForService:VLCPasscode account:VLCPasscode];
-    return passcode;
+    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+    BOOL wasReset = [defaults boolForKey:kVLCSettingPasscodeResetOnUpgrade];
+    if (wasReset) {
+        NSString *passcode = [SSKeychain passwordForService:VLCPasscode account:VLCPasscode];
+        return passcode;
+    }
+
+    [SSKeychain deletePasswordForService:VLCPasscode account:VLCPasscode];
+    [defaults setBool:YES forKey:kVLCSettingPasscodeResetOnUpgrade];
+    [defaults synchronize];
+
+    return nil;
 }
 
 - (BOOL)passcodeLockEnabled