File at-3.1.13.patch of Package at

Index: Makefile.in
===================================================================
--- Makefile.in.orig
+++ Makefile.in
@@ -84,39 +84,39 @@ atrun: atrun.in
 
 .c.o:
 	$(CC) -c $(CFLAGS) $(DEFS) $*.c
 
 install: all
-	$(INSTALL) -g root -o root -m 755 -d $(IROOT)$(etcdir)
-	$(INSTALL) -g root -o root -m 755 -d $(IROOT)$(bindir)
-	$(INSTALL) -g root -o root -m 755 -d $(IROOT)$(sbindir)
-	$(INSTALL) -g root -o root -m 755 -d $(IROOT)$(docdir)
-	$(INSTALL) -g root -o root -m 755 -d $(IROOT)$(atdocdir)
-	$(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR)
-	chmod 1770 $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR)
+	$(INSTALL) -m 755 -d $(IROOT)$(etcdir)
+	$(INSTALL) -m 755 -d $(IROOT)$(bindir)
+	$(INSTALL) -m 755 -d $(IROOT)$(sbindir)
+	$(INSTALL) -m 755 -d $(IROOT)$(docdir)
+	$(INSTALL) -m 755 -d $(IROOT)$(atdocdir)
+	$(INSTALL) -m 755 -d $(IROOT)$(ATJOB_DIR)
+	$(INSTALL) -m 755 -d $(IROOT)$(ATSPOOL_DIR)
+	chmod 1770 $(IROOT)$(ATJOB_DIR) $(IROOT)$(ATSPOOL_DIR)
 	touch $(IROOT)$(LFILE)
 	chmod 600 $(IROOT)$(LFILE)
-	chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(IROOT)$(LFILE)
-	test -f $(IROOT)$(etcdir)/at.allow || test -f $(IROOT)$(etcdir)/at.deny || $(INSTALL) -o root -g $(DAEMON_GROUPNAME) -m 640 at.deny $(IROOT)$(etcdir)/
-	$(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(IROOT)$(bindir)
+	test -f $(IROOT)$(etcdir)/at.allow || test -f $(IROOT)$(etcdir)/at.deny || $(INSTALL) -m 640 at.deny $(IROOT)$(etcdir)/
+	$(INSTALL) -m 6755 at $(IROOT)$(bindir)
 	$(LN_S) -f at $(IROOT)$(bindir)/atq
 	$(LN_S) -f at $(IROOT)$(bindir)/atrm
-	$(INSTALL) -g root -o root -m 755 batch $(IROOT)$(bindir)
-	$(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man1dir)
-	$(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man5dir)
-	$(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man8dir)
-	$(INSTALL) -g root -o root -m 755 atd $(IROOT)$(sbindir)
-	$(INSTALL) -g root -o root -m 755 atrun $(IROOT)$(sbindir)
-	$(INSTALL) -g root -o root -m 644 at.1 $(IROOT)$(man1dir)/
+	$(INSTALL) -m 755 batch $(IROOT)$(bindir)
+	$(INSTALL) -d -m 755 $(IROOT)$(man1dir)
+	$(INSTALL) -d -m 755 $(IROOT)$(man5dir)
+	$(INSTALL) -d -m 755 $(IROOT)$(man8dir)
+	$(INSTALL) -m 755 atd $(IROOT)$(sbindir)
+	$(INSTALL) -m 755 atrun $(IROOT)$(sbindir)
+	$(INSTALL) -m 644 at.1 $(IROOT)$(man1dir)/
 	cd $(IROOT)$(man1dir) && $(LN_S) -f at.1 atq.1 && $(LN_S) -f at.1 batch.1 && $(LN_S) -f at.1 atrm.1
-	$(INSTALL) -g root -o root -m 644 atd.8 $(IROOT)$(man8dir)/
+	$(INSTALL) -m 644 atd.8 $(IROOT)$(man8dir)/
 	sed "s,\$${exec_prefix},$(exec_prefix),g" <atrun.8>tmpman
-	$(INSTALL) -g root -o root -m 644 tmpman $(IROOT)$(man8dir)/atrun.8
+	$(INSTALL) -m 644 tmpman $(IROOT)$(man8dir)/atrun.8
 	rm -f tmpman
-	$(INSTALL) -g root -o root -m 644 at.allow.5 $(IROOT)$(man5dir)/
-	cd $(IROOT)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5
-	$(INSTALL) -g root -o root -m 644 $(DOCS) $(IROOT)$(atdocdir)
+	$(INSTALL) -m 644 at.allow.5 $(IROOT)$(man5dir)/
+	$(INSTALL) -m 644 at.deny.5  $(IROOT)$(man5dir)/
+	$(INSTALL) -m 644 $(DOCS) $(IROOT)$(atdocdir)
 	rm -f $(IROOT)$(mandir)/cat1/at.1* $(IROOT)$(mandir)/cat1/batch.1* \
 		$(IROOT)$(mandir)/cat1/atq.1*
 	rm -f $(IROOT)$(mandir)/cat1/atd.8*
 
 dist: checkin $(DIST) $(LIST) Filelist.asc
Index: Problems
===================================================================
--- Problems.orig
+++ Problems
@@ -3,10 +3,10 @@ Possible reasons why at may not run for
 - HAVE you run ./configure ?  If that fails for some
   mysterious reasons, you can also do a
 
 	make -f Makefile.old install
 
-- You may not have a user or group 'daemon' on your system.
+- You may not have a user or group 'at' on your system.
 
 - If you find numerous 'try again' error messages in your syslog files,
   you have too many processes running; recompile your kernel for a
   larger number
Index: atd.c
===================================================================
--- atd.c.orig
+++ atd.c
@@ -314,11 +314,16 @@ run_file(const char *filename, uid_t uid
 	     jobno, filename);
     }
     if ((fflags = fcntl(fd_in, F_GETFD)) < 0)
 	perr("Error in fcntl");
 
-    fcntl(fd_in, F_SETFD, fflags & ~FD_CLOEXEC);
+    /*
+    ** fcntl(fd_in, F_SETFD, fflags & ~FD_CLOEXEC);
+    ** What's that? This fcntl() removes the CLOSE_ON_EXEC flag.
+    */
+    if(fcntl(fd_in, F_SETFD, fflags | FD_CLOEXEC) < 0)
+      perr("Error in fcntl");
 
     /*
      * If the spool directory is mounted via NFS `atd' isn't able to
      * read from the job file and will bump out here.  The file is
      * opened as "root" but it is read as "daemon" which fails over
@@ -431,10 +436,13 @@ run_file(const char *filename, uid_t uid
 		perr("Cannot change group");
 
 	    if (setuid(uid) < 0)
 		perr("Cannot set user id");
 
+	    if (SIG_ERR == signal(SIGCHLD, SIG_DFL))
+		perr("Cannot reset signal handler to default");
+
 	    chdir("/");
 
 	    if (execle("/bin/sh", "sh", (char *) NULL, nenvp) != 0)
 		perr("Exec failed for /bin/sh");
 
@@ -612,11 +620,12 @@ run_loop()
 	    if (run_time + CHECK_INTERVAL <= now) {
 
 		/* Something went wrong the last time this was executed.
 		 * Let's remove the lockfile and reschedule.
 		 */
-		strncpy(lock_name, dirent->d_name, sizeof(lock_name));
+		strncpy(lock_name, dirent->d_name, sizeof(lock_name)-1);
+		lock_name[sizeof(lock_name)-1] = 0;
 		lock_name[0] = '=';
 		unlink(lock_name);
 		next_job = now;
 		nothing_to_do = 0;
 	    }
@@ -646,11 +655,12 @@ run_loop()
 	     * at a higher priority than anything before, keep its
 	     * filename.
 	     */
 	    run_batch++;
 	    if (strcmp(batch_name, dirent->d_name) > 0) {
-		strncpy(batch_name, dirent->d_name, sizeof(batch_name));
+		strncpy(batch_name, dirent->d_name, sizeof(batch_name)-1);
+		batch_name[sizeof(batch_name)-1] = 0;
 		batch_uid = buf.st_uid;
 		batch_gid = buf.st_gid;
 		batch_queue = queue;
 	    }
 	}
Index: configure.ac
===================================================================
--- configure.ac.orig
+++ configure.ac
@@ -129,11 +129,11 @@ else
 fi
 AC_DEFINE_UNQUOTED(PIDFILE, "$PIDDIR/atd.pid", [What is the name of our PID file?])
 AC_MSG_RESULT($PIDDIR)
 
 AC_MSG_CHECKING(location of spool directory)
-if test -d /var/spool/atjobs ; then
+if test -d /var/spool; then
   sp=/var/spool
   AC_MSG_RESULT(Using existing /var/spool/at{jobs|run})
 elif  test -d /var/spool/cron ; then
   sp=/var/spool/cron
   AC_MSG_RESULT(/var/spool/cron)
openSUSE Build Service is sponsored by