Index: at-3.2.2/Makefile.in =================================================================== --- at-3.2.2.orig/Makefile.in +++ at-3.2.2/Makefile.in @@ -95,43 +95,43 @@ atrun: atrun.in $(CC) -c $(CFLAGS) $(DEFS) $*.c install: all - $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(etcdir) - $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(bindir) - $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(sbindir) - $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdatadir) - $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(docdir) - $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdocdir) - $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) - chmod 1770 $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) + $(INSTALL) -m 755 -d $(DESTDIR)$(etcdir) + $(INSTALL) -m 755 -d $(DESTDIR)$(bindir) + $(INSTALL) -m 755 -d $(DESTDIR)$(sbindir) + $(INSTALL) -m 755 -d $(DESTDIR)$(atdatadir) + $(INSTALL) -m 755 -d $(DESTDIR)$(docdir) + $(INSTALL) -m 755 -d $(DESTDIR)$(atdocdir) + $(INSTALL) -m 755 -d $(DESTDIR)$(ATJOB_DIR) + $(INSTALL) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) + chmod 1770 $(DESTDIR)$(ATJOB_DIR) $(DESTDIR)$(ATSPOOL_DIR) touch $(DESTDIR)$(LFILE) chmod 600 $(DESTDIR)$(LFILE) - chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(DESTDIR)$(LFILE) - test -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -o root -g $(DAEMON_GROUPNAME) -m 640 at.deny $(DESTDIR)$(etcdir)/ - $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(DESTDIR)$(bindir) + test -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -m 640 at.deny $(DESTDIR)$(etcdir)/ + $(INSTALL) -m 6755 at $(DESTDIR)$(bindir) $(LN_S) -f at $(DESTDIR)$(bindir)/atq $(LN_S) -f at $(DESTDIR)$(bindir)/atrm - $(INSTALL) -g root -o root -m 755 batch $(DESTDIR)$(bindir) - $(INSTALL) -g root -o root -m 755 batch-job $(DESTDIR)$(atdatadir) - $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man1dir) - $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man5dir) - $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man8dir) - $(INSTALL) -g root -o root -m 755 atd $(DESTDIR)$(sbindir) - $(INSTALL) -g root -o root -m 755 atrun $(DESTDIR)$(sbindir) - $(INSTALL) -g root -o root -m 644 at.1 $(DESTDIR)$(man1dir)/ + $(INSTALL) -m 755 batch $(DESTDIR)$(bindir) + $(INSTALL) -m 755 batch-job $(DESTDIR)$(atdatadir) + $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir) + $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir) + $(INSTALL) -d -m 755 $(DESTDIR)$(man8dir) + $(INSTALL) -m 755 atd $(DESTDIR)$(sbindir) + $(INSTALL) -m 755 atrun $(DESTDIR)$(sbindir) + $(INSTALL) -m 644 at.1 $(DESTDIR)$(man1dir)/ cd $(DESTDIR)$(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 $(DESTDIR)$(man8dir)/ + $(INSTALL) -m 644 atd.8 $(DESTDIR)$(man8dir)/ sed "s,\$${exec_prefix},$(exec_prefix),g" tmpman - $(INSTALL) -g root -o root -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8 + $(INSTALL) -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8 rm -f tmpman - $(INSTALL) -g root -o root -m 644 at.allow.5 $(DESTDIR)$(man5dir)/ + $(INSTALL) -m 644 at.allow.5 $(DESTDIR)$(man5dir)/ cd $(DESTDIR)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5 - $(INSTALL) -g root -o root -m 644 $(DOCS) $(DESTDIR)$(atdocdir) + $(INSTALL) -m 644 $(DOCS) $(DESTDIR)$(atdocdir) rm -f $(DESTDIR)$(mandir)/cat1/at.1* $(DESTDIR)$(mandir)/cat1/batch.1* \ $(DESTDIR)$(mandir)/cat1/atq.1* rm -f $(DESTDIR)$(mandir)/cat1/atd.8* if test x"$(systemdsystemunitdir)" != xno; then \ - $(INSTALL) -o root -g root -m 755 -d $(DESTDIR)$(systemdsystemunitdir); \ - $(INSTALL) -o root -g root -m 644 atd.service $(DESTDIR)$(systemdsystemunitdir); \ + $(INSTALL) -m 755 -d $(DESTDIR)$(systemdsystemunitdir); \ + $(INSTALL) -m 644 atd.service $(DESTDIR)$(systemdsystemunitdir); \ fi dist: checkin $(DIST) $(LIST) Filelist.asc Index: at-3.2.2/Problems =================================================================== --- at-3.2.2.orig/Problems +++ at-3.2.2/Problems @@ -5,7 +5,7 @@ Possible reasons why at may not run for 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 Index: at-3.2.2/atd.c =================================================================== --- at-3.2.2.orig/atd.c +++ at-3.2.2/atd.c @@ -388,7 +388,12 @@ run_file(const char *filename, uid_t uid 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 @@ -512,6 +517,9 @@ run_file(const char *filename, uid_t uid 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) @@ -699,7 +707,8 @@ run_loop() /* 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; @@ -733,7 +742,8 @@ run_loop() */ 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: at-3.2.2/configure.ac =================================================================== --- at-3.2.2.orig/configure.ac +++ at-3.2.2/configure.ac @@ -150,7 +150,7 @@ AC_DEFINE_UNQUOTED(PIDFILE, "$PIDDIR/atd 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