Marcela Mašláňová 6d4186
diff -up at-3.1.14/at.1.in.nit at-3.1.14/at.1.in
Marcela Mašláňová 6d4186
--- at-3.1.14/at.1.in.nit	2013-09-08 14:43:53.000000000 +0200
Marcela Mašláňová 6d4186
+++ at-3.1.14/at.1.in	2013-12-04 11:36:29.737279969 +0100
Marcela Mašláňová 6d4186
@@ -204,7 +204,7 @@ queue for
Marcela Mašláňová 6d4186
 .BR batch .
Marcela Mašláňová 6d4186
 Queues with higher letters run with increased niceness.  The special
Marcela Mašláňová 6d4186
 queue "=" is reserved for jobs which are currently running.
Marcela Mašláňová 6d4186
-.P
Marcela Mašláňová 6d4186
+
Marcela Mašláňová 6d4186
 If a job is submitted to a queue designated with an uppercase letter, the
Marcela Mašláňová 6d4186
 job is treated as if it were submitted to batch at the time of the job.
Marcela Mašláňová 6d4186
 Once the time is reached, the batch processing rules with respect to load
Marcela Mašláňová 6d4186
diff -up at-3.1.14/atd.c.nit at-3.1.14/atd.c
Marcela Mašláňová 6d4186
--- at-3.1.14/atd.c.nit	2013-12-04 11:36:29.733279967 +0100
Marcela Mašláňová 6d4186
+++ at-3.1.14/atd.c	2013-12-04 11:38:44.551247496 +0100
Marcela Mašláňová 6d4186
@@ -198,6 +198,18 @@ myfork()
Marcela Mašláňová 6d4186
 
Marcela Mašláňová 6d4186
 #define fork myfork
Marcela Mašláňová 6d4186
 #endif
Marcela Mašláňová 6d4186
+#undef ATD_MAIL_PROGRAM
Marcela Mašláňová 6d4186
+#undef ATD_MAIL_NAME
Marcela Mašláňová 6d4186
+#if defined(SENDMAIL)
Marcela Mašláňová 6d4186
+#define ATD_MAIL_PROGRAM SENDMAIL
Marcela Mašláňová 6d4186
+#define ATD_MAIL_NAME    "sendmail"
Marcela Mašláňová 6d4186
+#elif  defined(MAILC)
Marcela Mašláňová 6d4186
+#define ATD_MAIL_PROGRAM MAILC
Marcela Mašláňová 6d4186
+#define ATD_MAIL_NAME    "mail"
Marcela Mašláňová 6d4186
+#elif  defined(MAILX)
Marcela Mašláňová 6d4186
+#define ATD_MAIL_PROGRAM MAILX
Marcela Mašláňová 6d4186
+#define ATD_MAIL_NAME    "mailx"
Marcela Mašláňová 6d4186
+#endif
Marcela Mašláňová 6d4186
 
Marcela Mašláňová 6d4186
 #ifdef WITH_SELINUX
Marcela Mašláňová 6d4186
 static int set_selinux_context(const char *name, const char *filename) {
Marcela Mašláňová 6d4186
@@ -337,6 +349,9 @@ run_file(const char *filename, uid_t uid
Marcela Mašláňová 6d4186
 	free(newname);
Marcela Mašláňová 6d4186
 	return;
Marcela Mašláňová 6d4186
     }
Marcela Mašláňová 6d4186
+
Marcela Mašláňová 6d4186
+    (void) setsid(); /* own session for process */
Marcela Mašláňová 6d4186
+
Marcela Mašláňová 6d4186
     /* Let's see who we mail to.  Hopefully, we can read it from
Marcela Mašláňová 6d4186
      * the command file; if not, send it to the owner, or, failing that,
Marcela Mašláňová 6d4186
      * to root.
Marcela Mašláňová 6d4186
@@ -505,6 +520,9 @@ run_file(const char *filename, uid_t uid
Marcela Mašláňová 6d4186
 	    if (setuid(uid) < 0)
Marcela Mašláňová 6d4186
 		perr("Cannot set user id");
Marcela Mašláňová 6d4186
 
Marcela Mašláňová 6d4186
+	    if (SIG_ERR == signal(SIGCHLD, SIG_DFL))
Marcela Mašláňová 6d4186
+		perr("Cannot reset signal handler to default");
Marcela Mašláňová 6d4186
+
Marcela Mašláňová 6d4186
 	    chdir("/");
Marcela Mašláňová 6d4186
 
Marcela Mašláňová 6d4186
 	    execle("/bin/sh", "sh", (char *) NULL, nenvp);
Marcela Mašláňová 6d4186
@@ -570,6 +588,9 @@ run_file(const char *filename, uid_t uid
Marcela Mašláňová 6d4186
 	    if (setuid(uid) < 0)
Marcela Mašláňová 6d4186
 		perr("Cannot set user id");
Marcela Mašláňová 6d4186
 
Marcela Mašláňová 6d4186
+	    if (SIG_ERR == signal(SIGCHLD, SIG_DFL))
Marcela Mašláňová 6d4186
+		perr("Cannot reset signal handler to default");
Marcela Mašláňová 6d4186
+
Marcela Mašláňová 6d4186
 	    chdir ("/");
Marcela Mašláňová 6d4186
 
Marcela Mašláňová 6d4186
 #if defined(SENDMAIL)
Marcela Mašláňová 6d4186
@@ -697,6 +718,7 @@ run_loop()
Marcela Mašláňová 6d4186
 		 * Let's remove the lockfile and reschedule.
Marcela Mašláňová 6d4186
 		 */
Marcela Mašláňová 6d4186
 		strncpy(lock_name, dirent->d_name, sizeof(lock_name));
Marcela Mašláňová 6d4186
+		lock_name[sizeof(lock_name)-1] = '\0';
Marcela Mašláňová 6d4186
 		lock_name[0] = '=';
Marcela Mašláňová 6d4186
 		unlink(lock_name);
Marcela Mašláňová 6d4186
 		next_job = now;
Marcela Mašláňová 6d4186
@@ -731,6 +753,7 @@ run_loop()
Marcela Mašláňová 6d4186
 	    run_batch++;
Marcela Mašláňová 6d4186
 	    if (strcmp(batch_name, dirent->d_name) > 0) {
Marcela Mašláňová 6d4186
 		strncpy(batch_name, dirent->d_name, sizeof(batch_name));
Marcela Mašláňová 6d4186
+		batch_name[sizeof(batch_name)-1] = '\0';
Marcela Mašláňová 6d4186
 		batch_uid = buf.st_uid;
Marcela Mašláňová 6d4186
 		batch_gid = buf.st_gid;
Marcela Mašláňová 6d4186
 		batch_queue = queue;