From 5df7ecfbd8ada3b6bd104d4508c7b7e551f3278a Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Fri, 25 Feb 2011 04:07:08 -0800 Subject: [PATCH] Implement a flexible cydia object whitelist. --- MobileCydia.mm | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/MobileCydia.mm b/MobileCydia.mm index 5ff70139..694be20b 100644 --- a/MobileCydia.mm +++ b/MobileCydia.mm @@ -1066,6 +1066,8 @@ static time_t now_; bool IsWildcat_; static CGFloat ScreenScale_; static NSString *Idiom_; + +static NSSet *CydiaHosts_; /* }}} */ /* Display Helpers {{{ */ @@ -4127,6 +4129,8 @@ static NSString *Warning_; + (NSString *) webScriptNameForSelector:(SEL)selector { if (false); + else if (selector == @selector(addCydiaHost:)) + return @"addCydiaHost"; else if (selector == @selector(addTrivialSource:)) return @"addTrivialSource"; else if (selector == @selector(close)) @@ -4227,6 +4231,10 @@ static NSString *Warning_; return [NSString stringWithCString:value]; } +- (void) addCydiaHost:(NSString *)host { + [CydiaHosts_ performSelectorOnMainThread:@selector(addObject:) withObject:host waitUntilDone:NO]; +} + - (void) addTrivialSource:(NSString *)href { [delegate_ performSelectorOnMainThread:@selector(addTrivialSource:) withObject:href waitUntilDone:NO]; } @@ -4563,7 +4571,7 @@ static NSString *Warning_; NSURLResponse *response([source response]); NSURL *url([response URL]); - NSString *scheme([url scheme]); + //NSString *scheme([url scheme]); NSString *host([url host]); if ([response isKindOfClass:[NSHTTPURLResponse class]]) { @@ -4572,11 +4580,7 @@ static NSString *Warning_; [self setHeaders:headers forHost:host]; } - if ( - [host isEqualToString:@"cydia.saurik.com"] || - [host hasSuffix:@".cydia.saurik.com"] || - [scheme isEqualToString:@"file"] - ) + if ([CydiaHosts_ containsObject:host]) [window setValue:cydia_ forKey:@"cydia"]; } @@ -9924,6 +9928,8 @@ int main(int argc, char *argv[]) { _pooled NSLog(@"unknown UIUserInterfaceIdiom!"); } + CydiaHosts_ = [NSMutableSet setWithObject:[[NSURL URLWithString:CydiaURL(@"")] host]]; + UI_ = CydiaURL([NSString stringWithFormat:@"ui/ios~%@", Idiom_]); PackageName = reinterpret_cast(method_getImplementation(class_getInstanceMethod([Package class], @selector(cyname)))); -- 2.45.2