diff options
author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-12-10 16:38:45 -0800 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-12-10 16:38:45 -0800 |
commit | c5ef502b42f4c4e4a0cc89a1fb7e42cbb8743878 (patch) | |
tree | f510c2dc95221d3c869e0830f0f84aa30d8ae8c7 | |
parent | f7f3bef313d94439eae5a5763fb8b61ec0ad410f (diff) | |
download | infinitytier-c5ef502b42f4c4e4a0cc89a1fb7e42cbb8743878.tar.gz infinitytier-c5ef502b42f4c4e4a0cc89a1fb7e42cbb8743878.zip |
Add check for being run as root.
-rw-r--r-- | main.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
@@ -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; |