diff --git a/ChangeLog b/ChangeLog index f08a575f6..d40f30339 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2007-06-21 Wolfgang Sourdeau + + * Main/sogod.m (main): prevent SOGo from running as root. + 2007-06-19 Wolfgang Sourdeau * SoObjects/SOGo/SOGoUser.m ([SOGoUser diff --git a/Main/sogod.m b/Main/sogod.m index 821bb1dbe..3dfb7920c 100644 --- a/Main/sogod.m +++ b/Main/sogod.m @@ -19,6 +19,8 @@ 02111-1307, USA. */ +#import + #import #import @@ -31,21 +33,33 @@ main (int argc, char **argv, char **env) NSString *tzName; NSUserDefaults *ud; NSAutoreleasePool *pool; + int rc; pool = [NSAutoreleasePool new]; + + if (getuid() > 0) + { + rc = 0; #if LIB_FOUNDATION_LIBRARY - [NSProcessInfo initializeWithArguments: argv count: argc environment: env]; + [NSProcessInfo initializeWithArguments: argv count: argc environment: env]; #endif - [NGBundleManager defaultBundleManager]; + [NGBundleManager defaultBundleManager]; - ud = [NSUserDefaults standardUserDefaults]; - tzName = [ud stringForKey: @"SOGoServerTimeZone"]; - if (!tzName) - tzName = @"Canada/Eastern"; - [NSTimeZone setDefaultTimeZone: [NSTimeZone timeZoneWithName: tzName]]; + ud = [NSUserDefaults standardUserDefaults]; + tzName = [ud stringForKey: @"SOGoServerTimeZone"]; + if (!tzName) + tzName = @"Canada/Eastern"; + [NSTimeZone setDefaultTimeZone: [NSTimeZone timeZoneWithName: tzName]]; - WOWatchDogApplicationMain (@"SOGo", argc, (void *) argv); + WOWatchDogApplicationMain (@"SOGo", argc, (void *) argv); + } + else + { + NSLog (@"Don't run SOGo as root!"); + rc = -1; + } [pool release]; - return 0; + + return rc; }