X-Git-Url: https://git.saurik.com/cydia.git/blobdiff_plain/907ba49114259e49a89bf54e6e5b137dab12d2af..202bf8406ce550a612cce583115dc6e1f07bb031:/MobileCydia.mm diff --git a/MobileCydia.mm b/MobileCydia.mm index 69084f02..6dfe632f 100644 --- a/MobileCydia.mm +++ b/MobileCydia.mm @@ -239,29 +239,29 @@ union SplitHash { }; // }}} -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); } }; @@ -9231,8 +9231,6 @@ _end - (void) presentModalViewController:(UIViewController *)controller force:(BOOL)force { UINavigationController *navigation([[[UINavigationController alloc] initWithRootViewController:controller] autorelease]); - if (IsWildcat_) - [navigation setModalPresentationStyle:UIModalPresentationFormSheet]; UIViewController *parent; if (emulated_ == nil) @@ -9244,6 +9242,8 @@ _end parent = tabbar_; } + if (IsWildcat_) + [navigation setModalPresentationStyle:UIModalPresentationFormSheet]; [parent presentModalViewController:navigation animated:YES]; } @@ -9381,7 +9381,7 @@ _end _trace(); if (UpgradeCydia_ && Finish_ > 0) { - setreugid(0, 0); + seteugid(0, 0); system("su -c /usr/bin/uicache mobile"); } else { system("/usr/bin/uicache"); @@ -10166,7 +10166,8 @@ MSHook(id, NSUserDefaults$objectForKey$, NSUserDefaults *self, SEL _cmd, NSStrin } int main(int argc, char *argv[]) { - setreugid(501, 501); + seteugid(0, 0); + seteguid(501, 501); NSAutoreleasePool *pool([[NSAutoreleasePool alloc] init]); @@ -10517,8 +10518,7 @@ int main(int argc, char *argv[]) { 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]);