Make tsak a bit more robust

pull/1/head
Timothy Pearson 13 years ago
parent 13eabe6aa5
commit d54faa8114

@ -49,7 +49,7 @@ int mPipe_fd_out;
struct sigaction usr_action; struct sigaction usr_action;
sigset_t block_mask; sigset_t block_mask;
char *keycode[256] = const char *keycode[256] =
{ {
"", "<esc>", "1", "2", "3", "4", "5", "6", "7", "8", "", "<esc>", "1", "2", "3", "4", "5", "6", "7", "8",
"9", "0", "", "=", "<backspace>", "<tab>", "q", "w", "e", "r", "9", "0", "", "=", "<backspace>", "<tab>", "q", "w", "e", "r",
@ -144,7 +144,6 @@ void tearDownPipe()
void setupPipe() void setupPipe()
{ {
/* Create the FIFOs if they do not exist */ /* Create the FIFOs if they do not exist */
umask(0); umask(0);
mkdir(FIFO_DIR,0644); mkdir(FIFO_DIR,0644);
@ -158,11 +157,21 @@ void setupPipe()
} }
} }
void handle_sigterm (int sig) class PipeHandler
{
public:
PipeHandler();
~PipeHandler();
};
PipeHandler::PipeHandler()
{
setupPipe();
}
PipeHandler::~PipeHandler()
{ {
tearDownPipe(); tearDownPipe();
exit(0);
return;
} }
int main (int argc, char *argv[]) int main (int argc, char *argv[])
@ -176,15 +185,9 @@ int main (int argc, char *argv[])
bool alt_down = false; bool alt_down = false;
bool hide_event = false; bool hide_event = false;
// Initialize signal handlers // Create the output pipe
sigfillset(&block_mask); PipeHandler controlpipe;
usr_action.sa_handler = handle_sigterm;
usr_action.sa_mask = block_mask;
usr_action.sa_flags = 0;
sigaction(SIGTERM, &usr_action, NULL);
atexit(tearDownPipe);
if ((getuid ()) != 0) { 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"); 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; return 5;
@ -230,9 +233,6 @@ int main (int argc, char *argv[])
fprintf(stderr, "Failed to grab exclusive input device lock"); fprintf(stderr, "Failed to grab exclusive input device lock");
return 1; return 1;
} }
// Create the output pipe
setupPipe();
while (1) { while (1) {
@ -276,7 +276,5 @@ int main (int argc, char *argv[])
} }
} }
tearDownPipe();
return 0; return 0;
} }

Loading…
Cancel
Save