};
// }}}
-static void setreugid(uid_t uid, gid_t gid) {
- _assert(setreuid(uid, uid) != -1);
- _assert(setregid(gid, gid) != -1);
-}
+#define seteugid(uid, gid) do { \
+ _assert(setreuid(0, uid) != -1); \
+ _assert(setregid(0, gid) != -1); \
+} while (false)
-static void setreguid(gid_t gid, uid_t uid) {
- _assert(setregid(gid, gid) != -1);
- _assert(setreuid(uid, uid) != -1);
-}
+#define seteguid(uid, gid) do { \
+ _assert(setregid(0, gid) != -1); \
+ _assert(setreuid(0, uid) != -1); \
+} while (false)
struct Root {
Root() {
_trace();
- setreugid(0, 0);
+ seteugid(0, 0);
_assert(pthread_setugid_np(0, 0) != -1);
- setreguid(501, 501);
+ seteguid(501, 501);
}
~Root() {
_trace();
- setreugid(0, 0);
+ seteugid(0, 0);
_assert(pthread_setugid_np(KAUTH_UID_NONE, KAUTH_GID_NONE) != -1);
- setreguid(501, 501);
+ seteguid(501, 501);
}
};
return [CydiaWebViewController requestWithHeaders:[super webView:view resource:resource willSendRequest:request redirectResponse:response fromDataSource:source]];
}
+- (NSURLRequest *) webThreadWebView:(WebView *)view resource:(id)resource willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response fromDataSource:(WebDataSource *)source {
+ return [CydiaWebViewController requestWithHeaders:[super webThreadWebView:view resource:resource willSendRequest:request redirectResponse:response fromDataSource:source]];
+}
+
+ (NSURLRequest *) requestWithHeaders:(NSURLRequest *)request {
NSMutableURLRequest *copy([[request mutableCopy] autorelease]);
// on the iPad, this view controller is ALSO visible. :(
if (IsWildcat_)
- if (UIViewController *top = [self topViewController])
- if (top != visible)
- [top reloadData];
+ if (UIViewController *modal = [self modalViewController])
+ if ([modal modalPresentationStyle] == UIModalPresentationFormSheet)
+ if (UIViewController *top = [self topViewController])
+ if (top != visible)
+ [top reloadData];
}
- (void) unloadData {
case 1: {
NSString *href = [[alert textField] text];
- static Pcre href_r("^http(s?)://[^# ]*$");
+ static Pcre href_r("^(http(s?)://|file:///)[^# ]*$");
if (!href_r(href)) {
UIAlertView *alert = [[[UIAlertView alloc]
initWithTitle:[NSString stringWithFormat:Colon_, Error_, UCLocalize("INVALID_URL")]
- (void) presentModalViewController:(UIViewController *)controller force:(BOOL)force {
UINavigationController *navigation([[[UINavigationController alloc] initWithRootViewController:controller] autorelease]);
- if (IsWildcat_)
- [navigation setModalPresentationStyle:UIModalPresentationFormSheet];
UIViewController *parent;
if (emulated_ == nil)
parent = tabbar_;
}
+ if (IsWildcat_)
+ [navigation setModalPresentationStyle:UIModalPresentationFormSheet];
[parent presentModalViewController:navigation animated:YES];
}
_trace();
if (UpgradeCydia_ && Finish_ > 0) {
- setreugid(0, 0);
+ seteugid(0, 0);
system("su -c /usr/bin/uicache mobile");
} else {
system("/usr/bin/uicache");
}
int main(int argc, char *argv[]) {
- setreugid(501, 501);
+ seteugid(0, 0);
+ seteguid(501, 501);
NSAutoreleasePool *pool([[NSAutoreleasePool alloc] init]);
dlopen("/Library/MobileSubstrate/MobileSubstrate.dylib", RTLD_LAZY | RTLD_GLOBAL);*/
if (kCFCoreFoundationVersionNumber > 1000)
- for (const char *path : (const char *[]) {"/var/lib", "/var/cache"})
- _root(system([[NSString stringWithFormat:@"/usr/libexec/cydia/setnsfpn %s", path] UTF8String]));
+ _root(system([[NSString stringWithFormat:@"/usr/libexec/cydia/setnsfpn /var/lib"] UTF8String]));
int version([[NSString stringWithContentsOfFile:@"/var/lib/cydia/firmware.ver"] intValue]);