summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2013-12-10 16:38:45 -0800
committerAdam Ierymenko <adam.ierymenko@gmail.com>2013-12-10 16:38:45 -0800
commitc5ef502b42f4c4e4a0cc89a1fb7e42cbb8743878 (patch)
treef510c2dc95221d3c869e0830f0f84aa30d8ae8c7
parentf7f3bef313d94439eae5a5763fb8b61ec0ad410f (diff)
downloadinfinitytier-c5ef502b42f4c4e4a0cc89a1fb7e42cbb8743878.tar.gz
infinitytier-c5ef502b42f4c4e4a0cc89a1fb7e42cbb8743878.zip
Add check for being run as root.
-rw-r--r--main.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/main.cpp b/main.cpp
index 4bb47cf0..298a8a2e 100644
--- a/main.cpp
+++ b/main.cpp
@@ -415,7 +415,7 @@ int main(int argc,char **argv)
port = Utils::strToUInt(argv[i] + 2);
if (port > 65535) {
printHelp(argv[0],stderr);
- return -1;
+ return 1;
}
break;
case 'v':
@@ -425,7 +425,7 @@ int main(int argc,char **argv)
controlPort = Utils::strToUInt(argv[i] + 2);
if (controlPort > 65535) {
printHelp(argv[0],stderr);
- return -1;
+ return 1;
}
break;
case 'q':
@@ -458,6 +458,10 @@ int main(int argc,char **argv)
homeDir = ZT_DEFAULTS.defaultHomePath.c_str();
#ifdef __UNIX_LIKE__
+ if (getuid()) {
+ fprintf(stderr,"%s: must be run as root (uid==0)\n",argv[0]);
+ return 1;
+ }
mkdir(homeDir,0755); // will fail if it already exists
{
char pidpath[4096];
@@ -480,12 +484,12 @@ int main(int argc,char **argv)
const char *upgPath = node->reasonForTermination();
if (upgPath)
execl(upgPath,upgPath,"-s",(char *)0); // -s = (re)start after install/upgrade
- exitCode = -1;
- fprintf(stderr,"%s: abnormal termination: unable to execute update at %s",argv[0],(upgPath) ? upgPath : "(unknown path)");
+ exitCode = 2;
+ fprintf(stderr,"%s: abnormal termination: unable to execute update at %s\n",argv[0],(upgPath) ? upgPath : "(unknown path)");
#endif
} break;
case Node::NODE_UNRECOVERABLE_ERROR: {
- exitCode = -1;
+ exitCode = 3;
const char *termReason = node->reasonForTermination();
fprintf(stderr,"%s: abnormal termination: %s\n",argv[0],(termReason) ? termReason : "(unknown reason)");
} break;