summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2014-05-14 04:36:12 -0700
committerJay Freeman (saurik) <saurik@saurik.com>2014-05-14 04:36:12 -0700
commit2595e4c379a0a75854a02dd9fc68dae99c274434 (patch)
tree502f9c2c542d4f3353d798573f7652fe96982307
parent299aeacd7d337a1e57ca14660a151f5a9fd453e2 (diff)
Do not allow invalid APT config lines as sources.
-rw-r--r--MobileCydia.app/English.lproj/Localizable.strings1
-rw-r--r--MobileCydia.mm26
2 files changed, 27 insertions, 0 deletions
diff --git a/MobileCydia.app/English.lproj/Localizable.strings b/MobileCydia.app/English.lproj/Localizable.strings
index fc3d5e4..a098861 100644
--- a/MobileCydia.app/English.lproj/Localizable.strings
+++ b/MobileCydia.app/English.lproj/Localizable.strings
@@ -94,6 +94,7 @@
"INSTALLED_BY_PACKAGE" = "Installed by Package";
"INSTALLED_DETAILS" = "Installed Package";
"INSTALLED_FILES" = "Installed Files";
+"INVALID_URL" = "Invalid URL";
"KEEP_OLD_COPY" = "Keep My Old Copy";
"LOADING" = "Loading";
"LOADING_DATA" = "Loading Data";
diff --git a/MobileCydia.mm b/MobileCydia.mm
index e0539fa..b8504f4 100644
--- a/MobileCydia.mm
+++ b/MobileCydia.mm
@@ -8454,6 +8454,22 @@ static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachabi
case 1: {
NSString *href = [[alert textField] text];
+ static Pcre href_r("^http(s?)://[^# ]*$");
+ if (!href_r(href)) {
+ UIAlertView *alert = [[[UIAlertView alloc]
+ initWithTitle:Error_
+ message:UCLocalize("INVALID_URL")
+ delegate:self
+ cancelButtonTitle:UCLocalize("OK")
+ otherButtonTitles:nil
+ ] autorelease];
+
+ [alert setContext:@"badurl"];
+ [alert show];
+
+ break;
+ }
+
if (![href hasSuffix:@"/"])
href_ = [href stringByAppendingString:@"/"];
else
@@ -10213,6 +10229,16 @@ int main(int argc, char *argv[]) {
Changed_ = true;
}
+
+ _H<NSMutableArray> broken([NSMutableArray array]);
+ for (NSString *key in (id) Sources_)
+ if ([key rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"# "]].location != NSNotFound)
+ [broken addObject:key];
+ if ([broken count] != 0) {
+ for (NSString *key in (id) broken)
+ [Sources_ removeObjectForKey:key];
+ Changed_ = true;
+ } broken = nil;
/* }}} */
CydiaWriteSources();