From e7578c4d8550ed6c3136048689c1bd84aa4e3585 Mon Sep 17 00:00:00 2001 From: Cory Imdieke Date: Thu, 7 Jul 2016 13:43:16 -0500 Subject: [PATCH 1/2] Added object class check to current user controller's cache --- .../PFCurrentUserController.m | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m b/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m index ff4d14f7c..25e4856eb 100644 --- a/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m +++ b/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m @@ -22,6 +22,7 @@ #import "PFQuery.h" #import "PFUserConstants.h" #import "PFUserPrivate.h" +#import "PFObjectSubclassingController.h" @interface PFCurrentUserController () { dispatch_queue_t _dataQueue; @@ -102,9 +103,16 @@ - (BFTask *)_getCurrentUserAsyncWithOptions:(PFCurrentUserLoadingOptions)options matchesDisk = _currentUserMatchesDisk; currentUser = _currentUser; }); - if (currentUser) { - return currentUser; - } + if (currentUser) { + // Verify that the current user matches our expected registered subclass + Class expectedClass = [[PFObjectSubclassingController defaultController] subclassForParseClassName:@"_User"]; + if(expectedClass == [currentUser class]){ + return currentUser; + } else { + matchesDisk = NO; + currentUser = nil; + } + } if (matchesDisk) { if (options & PFCurrentUserLoadingOptionCreateLazyIfNotAvailable) { From 531da3d2255d6e24da828779407b7114b0581a07 Mon Sep 17 00:00:00 2001 From: Cory Imdieke Date: Thu, 7 Jul 2016 15:04:29 -0500 Subject: [PATCH 2/2] Changed class comparison to a safer check --- .../User/CurrentUserController/PFCurrentUserController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m b/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m index 25e4856eb..43fafc84b 100644 --- a/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m +++ b/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m @@ -106,7 +106,7 @@ - (BFTask *)_getCurrentUserAsyncWithOptions:(PFCurrentUserLoadingOptions)options if (currentUser) { // Verify that the current user matches our expected registered subclass Class expectedClass = [[PFObjectSubclassingController defaultController] subclassForParseClassName:@"_User"]; - if(expectedClass == [currentUser class]){ + if([currentUser isKindOfClass:expectedClass]){ return currentUser; } else { matchesDisk = NO;