+++ /dev/null
-Index: cgcs-users-1.0-r0/main.c
-===================================================================
---- cgcs-users-1.0-r0.orig/main.c
-+++ cgcs-users-1.0-r0/main.c
-@@ -37,6 +37,7 @@
-
- /* Header files */
- #include "ibsh.h"
-+#include "stdlib.h"
-
- /* Main: */
- /* Handle arguments, read config files, start command processing. */
-@@ -57,13 +58,28 @@
- /* use our builtin code, otherwise use execve. After execve, check if the user didnt */
- /* use the last command to create some illegal content. If yes, erase that. Give the */
- /* notice only afterwards. */
-+
-+void ALRMhandler(int sig) {
-+ OPENLOG;
-+ syslog(LOG_INFO, "CLI timeout, user %s has logged out.", loggedin.uname);
-+ CLOSELOG;
-+ exit(0);
-+}
-+
- int main(int argc, char **argv)
- {
- char temp[STRING_SIZE], *buf;
- struct stat info;
- uid_t ruid, euid;
- gid_t rgid, egid;
-+ unsigned int tout_cli = 0;
-
-+ const char* tout = getenv("TMOUT");
-+ if (tout)
-+ tout_cli = atoi(tout);
-+ else
-+ //default to 5 mins
-+ tout_cli = 300;
-
- /* setuid protection */
- ruid = getuid();
-@@ -107,6 +123,7 @@ int main(int argc, char **argv)
- signal( SIGQUIT, SIG_IGN );
- signal( SIGTERM, SIG_IGN );
- signal( SIGTSTP, SIG_IGN );
-+ signal( SIGALRM, ALRMhandler );
- LoadConfig();
-
- /* Command mode */
-@@ -144,6 +161,7 @@ int main(int argc, char **argv)
- /* will be allowed to run, unless it is mentioned in the */
- /* config files. Files that are created with an extension */
- /* that is listed in the other config file, must be deleted! */
-+ alarm(tout_cli);
- for ( ; ; ) {
- /* Where is he ? */
- getcwd(real_path, STRING_SIZE);
-@@ -153,12 +171,12 @@ int main(int argc, char **argv)
- }
- /* We don't want the user to know where he actually is. */
- /* This is the prompt! */
-- printf("[%s]%% ", jail_path);
-+ printf("[%s]%% ", loggedin.uname);
- /* scanf("%s", user_command); */
- myscanf(user_command, real_path);
-+ alarm(tout_cli);
- /* Command interpretation and execution. */
- if ( (CommandOK(user_command, loggedin.udir, jail_path, filtered_command)) == 0 ) {
-- printf("Sorry, can't let you do that!\n");
- log_attempt(loggedin.uname); /* v0.2a */
- continue;
- }
-Index: cgcs-users-1.0-r0/config.c
-===================================================================
---- cgcs-users-1.0-r0.orig/config.c
-+++ cgcs-users-1.0-r0/config.c
-@@ -166,7 +166,6 @@ int LoadConfig( void )
- // Delete '\n'
- tmp2[i][strlen(tmp2[i]) - 1] = '\0';
- strncpy(extensions[i],tmp2[i],strlen(tmp2[i]));
-- printf("EXTENSIONS %s\n",extensions[i]);
- i++;
- }
- }