diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2012-04-18 14:23:17 -0500 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2012-04-18 14:23:17 -0500 |
commit | 632eda3b6c6d9aa903e31d3533e8bcb631868d0b (patch) | |
tree | cd53414ef2246331373dc016ffdbf8f1e370d6e4 /tsak | |
parent | 3f90a9b871b156e7932ac77f0d71ad3105a80954 (diff) | |
download | tdebase-632eda3b6c6d9aa903e31d3533e8bcb631868d0b.tar.gz tdebase-632eda3b6c6d9aa903e31d3533e8bcb631868d0b.zip |
Cleanup tsak FIFOs if unable to initialize and enter running state
Diffstat (limited to 'tsak')
-rw-r--r-- | tsak/main.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/tsak/main.cpp b/tsak/main.cpp index f0c2b4fa0..f06fb9184 100644 --- a/tsak/main.cpp +++ b/tsak/main.cpp @@ -330,14 +330,20 @@ class PipeHandler public: PipeHandler(); ~PipeHandler(); + + bool active; }; PipeHandler::PipeHandler() { + active = false; } PipeHandler::~PipeHandler() { + if (active) { + tearDownPipe(); + } tearDownLockingPipe(); } @@ -388,6 +394,8 @@ int main (int argc, char *argv[]) } while (1) { + controlpipe.active = true; + if ((getuid ()) != 0) { printf ("You are not root! This WILL NOT WORK!\nDO NOT attempt to bypass security restrictions, e.g. by changing keyboard permissions or owner, if you want the SAK system to remain secure...\n"); return 5; @@ -405,7 +413,9 @@ int main (int argc, char *argv[]) sleep(1); else { int i=fork(); - if (i<0) return 12; // fork failed + if (i<0) { + return 12; // fork failed + } if (i>0) { return 4; } @@ -545,9 +555,12 @@ int main (int argc, char *argv[]) // fork udev monitor process int i=fork(); - if (i<0) return 10; // fork failed + if (i<0) { + return 10; // fork failed + } if (i>0) { // Terminate parent + controlpipe.active = false; return 0; } |