update to 3.2.5
This commit is contained in:
parent
71e29dd905
commit
0101269f64
@ -12,10 +12,10 @@ diff -up at-3.1.14/atd.c.mail at-3.1.14/atd.c
|
|||||||
/* Global variables */
|
/* Global variables */
|
||||||
|
|
||||||
uid_t real_uid, effective_uid;
|
uid_t real_uid, effective_uid;
|
||||||
@@ -117,6 +121,7 @@ static time_t last_chg;
|
@@ -117,6 +121,7 @@ static int nothing_to_do = 0;
|
||||||
static int nothing_to_do;
|
|
||||||
unsigned int batch_interval;
|
unsigned int batch_interval;
|
||||||
static int run_as_daemon = 0;
|
static int run_as_daemon = 0;
|
||||||
|
static int hupped = 0;
|
||||||
+static int mail_with_hostname = 0;
|
+static int mail_with_hostname = 0;
|
||||||
|
|
||||||
static volatile sig_atomic_t term_signal = 0;
|
static volatile sig_atomic_t term_signal = 0;
|
||||||
|
|||||||
@ -1,111 +0,0 @@
|
|||||||
diff -up at-3.1.14/atd.c.timers at-3.1.14/atd.c
|
|
||||||
--- at-3.1.14/atd.c.timers 2013-12-02 11:03:01.250080057 +0100
|
|
||||||
+++ at-3.1.14/atd.c 2013-12-02 11:06:15.560243498 +0100
|
|
||||||
@@ -831,6 +831,54 @@ run_loop()
|
|
||||||
return next_job;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifdef HAVE_TIMER_CREATE
|
|
||||||
+timer_t timer;
|
|
||||||
+struct itimerspec timeout;
|
|
||||||
+
|
|
||||||
+void timer_setup()
|
|
||||||
+{
|
|
||||||
+ struct sigevent sev;
|
|
||||||
+
|
|
||||||
+ sev.sigev_notify = SIGEV_SIGNAL;
|
|
||||||
+ sev.sigev_signo = SIGHUP;
|
|
||||||
+ sev.sigev_value.sival_ptr = &timer;
|
|
||||||
+
|
|
||||||
+ memset(&timeout, 0, sizeof(timeout));
|
|
||||||
+
|
|
||||||
+ if (timer_create(CLOCK_REALTIME, &sev, &timer) < 0)
|
|
||||||
+ pabort("unable to create timer");
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+time_t atd_gettime()
|
|
||||||
+{
|
|
||||||
+ struct timespec curtime;
|
|
||||||
+
|
|
||||||
+ clock_gettime(CLOCK_REALTIME, &curtime);
|
|
||||||
+
|
|
||||||
+ return curtime.tv_sec;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void atd_setalarm(time_t next)
|
|
||||||
+{
|
|
||||||
+ timeout.it_value.tv_sec = next;
|
|
||||||
+ timer_settime(timer, TIMER_ABSTIME, &timeout, NULL);
|
|
||||||
+ pause();
|
|
||||||
+}
|
|
||||||
+#else
|
|
||||||
+void timer_setup()
|
|
||||||
+{
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+time_t atd_gettime()
|
|
||||||
+{
|
|
||||||
+ return time(NULL);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void atd_setalarm(time_t next)
|
|
||||||
+{
|
|
||||||
+ sleep(next - atd_gettime());
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
/* Global functions */
|
|
||||||
|
|
||||||
int
|
|
||||||
@@ -936,7 +984,7 @@ main(int argc, char *argv[])
|
|
||||||
sigaction(SIGCHLD, &act, NULL);
|
|
||||||
|
|
||||||
if (!run_as_daemon) {
|
|
||||||
- now = time(NULL);
|
|
||||||
+ now = atd_gettime();
|
|
||||||
run_loop();
|
|
||||||
exit(EXIT_SUCCESS);
|
|
||||||
}
|
|
||||||
@@ -959,13 +1007,14 @@ main(int argc, char *argv[])
|
|
||||||
act.sa_handler = set_term;
|
|
||||||
sigaction(SIGINT, &act, NULL);
|
|
||||||
|
|
||||||
+ timer_setup();
|
|
||||||
daemon_setup();
|
|
||||||
|
|
||||||
do {
|
|
||||||
- now = time(NULL);
|
|
||||||
+ now = atd_gettime();
|
|
||||||
next_invocation = run_loop();
|
|
||||||
if (next_invocation > now) {
|
|
||||||
- sleep(next_invocation - now);
|
|
||||||
+ atd_setalarm(next_invocation);
|
|
||||||
}
|
|
||||||
} while (!term_signal);
|
|
||||||
daemon_cleanup();
|
|
||||||
diff -up at-3.1.14/config.h.in.timers at-3.1.14/config.h.in
|
|
||||||
--- at-3.1.14/config.h.in.timers 2013-12-02 11:00:27.000000000 +0100
|
|
||||||
+++ at-3.1.14/config.h.in 2013-12-02 11:02:06.521033976 +0100
|
|
||||||
@@ -38,6 +38,9 @@
|
|
||||||
/* Define to 1 if you have the `getloadavg' function. */
|
|
||||||
#undef HAVE_GETLOADAVG
|
|
||||||
|
|
||||||
+/* Define to 1 if you have the `timer_create' function. */
|
|
||||||
+#undef HAVE_TIMER_CREATE
|
|
||||||
+
|
|
||||||
/* Define to 1 if you have the <getopt.h> header file. */
|
|
||||||
#undef HAVE_GETOPT_H
|
|
||||||
|
|
||||||
diff -up at-3.1.14/configure.ac.timers at-3.1.14/configure.ac
|
|
||||||
--- at-3.1.14/configure.ac.timers 2013-12-02 11:00:27.000000000 +0100
|
|
||||||
+++ at-3.1.14/configure.ac 2013-12-02 11:02:45.217066560 +0100
|
|
||||||
@@ -254,6 +254,10 @@ AC_CHECK_LIB(selinux, is_selinux_enabled
|
|
||||||
AC_SUBST(SELINUXLIB)
|
|
||||||
AC_SUBST(WITH_SELINUX)
|
|
||||||
|
|
||||||
+dnl check for POSIX timer functions
|
|
||||||
+AC_SEARCH_LIBS([timer_create],[rt])
|
|
||||||
+AC_CHECK_FUNCS([timer_create])
|
|
||||||
+
|
|
||||||
AC_MSG_CHECKING(groupname to run under)
|
|
||||||
AC_ARG_WITH(daemon_groupname,
|
|
||||||
[ --with-daemon_groupname=DAEMON_GROUPNAME Groupname to run under (default daemon) ],
|
|
||||||
@ -25,60 +25,60 @@ diff -up at-3.1.18/Makefile.in.make at-3.1.18/Makefile.in
|
|||||||
+ $(CC) -c $(CFLAGS) -fPIE $(DEFS) $*.c
|
+ $(CC) -c $(CFLAGS) -fPIE $(DEFS) $*.c
|
||||||
|
|
||||||
install: all
|
install: all
|
||||||
- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(etcdir)
|
- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(etcdir)
|
||||||
- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(bindir)
|
- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(bindir)
|
||||||
- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(sbindir)
|
- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(sbindir)
|
||||||
- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(atdatadir)
|
- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdatadir)
|
||||||
- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(docdir)
|
- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(docdir)
|
||||||
- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(atdocdir)
|
- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdocdir)
|
||||||
- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR)
|
- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR)
|
||||||
- chmod 1770 $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR)
|
- chmod 1770 $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR)
|
||||||
+ $(INSTALL) -m 755 -d $(IROOT)$(etcdir)
|
+ $(INSTALL) -m 755 -d $(DESTDIR)$(etcdir)
|
||||||
+ $(INSTALL) -m 755 -d $(IROOT)$(bindir)
|
+ $(INSTALL) -m 755 -d $(DESTDIR)$(bindir)
|
||||||
+ $(INSTALL) -m 755 -d $(IROOT)$(sbindir)
|
+ $(INSTALL) -m 755 -d $(DESTDIR)$(sbindir)
|
||||||
+ $(INSTALL) -m 755 -d $(IROOT)$(docdir)
|
+ $(INSTALL) -m 755 -d $(DESTDIR)$(docdir)
|
||||||
+ $(INSTALL) -m 755 -d $(IROOT)$(atdocdir)
|
+ $(INSTALL) -m 755 -d $(DESTDIR)$(atdocdir)
|
||||||
+ $(INSTALL) -m 755 -d $(IROOT)$(etcdir)/pam.d/
|
+ $(INSTALL) -m 755 -d $(DESTDIR)$(etcdir)/pam.d/
|
||||||
+ $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(IROOT)$(ATSPOOL_DIR)
|
+ $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR)
|
||||||
+ chmod 700 $(IROOT)$(ATJOB_DIR) $(IROOT)$(ATSPOOL_DIR)
|
+ chmod 700 $(DESTDIR)$(ATJOB_DIR) $(DESTDIR)$(ATSPOOL_DIR)
|
||||||
+ chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(IROOT)$(ATJOB_DIR) $(IROOT)$(ATSPOOL_DIR)
|
+ chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(DESTDIR)$(ATJOB_DIR) $(DESTDIR)$(ATSPOOL_DIR)
|
||||||
touch $(IROOT)$(LFILE)
|
touch $(DESTDIR)$(LFILE)
|
||||||
chmod 600 $(IROOT)$(LFILE)
|
chmod 600 $(DESTDIR)$(LFILE)
|
||||||
chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(IROOT)$(LFILE)
|
chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(DESTDIR)$(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)/
|
- 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 $(IROOT)$(bindir)
|
- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(DESTDIR)$(bindir)
|
||||||
+ test -f $(IROOT)$(etcdir)/at.allow || test -f $(IROOT)$(etcdir)/at.deny || $(INSTALL) -m 600 at.deny $(IROOT)$(etcdir)/
|
+ test -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -m 600 at.deny $(DESTDIR)$(etcdir)/
|
||||||
+ $(INSTALL) -o $(INSTALL_ROOT_USER) -g $(DAEMON_GROUPNAME) pam_atd $(IROOT)$(etcdir)/pam.d/atd
|
+ $(INSTALL) -o $(INSTALL_ROOT_USER) -g $(DAEMON_GROUPNAME) pam_atd $(DESTDIR)$(etcdir)/pam.d/atd
|
||||||
+ $(INSTALL) -m 4755 at $(IROOT)$(bindir)
|
+ $(INSTALL) -m 4755 at $(DESTDIR)$(bindir)
|
||||||
$(LN_S) -f at $(IROOT)$(bindir)/atq
|
$(LN_S) -f at $(DESTDIR)$(bindir)/atq
|
||||||
$(LN_S) -f at $(IROOT)$(bindir)/atrm
|
$(LN_S) -f at $(DESTDIR)$(bindir)/atrm
|
||||||
- $(INSTALL) -g root -o root -m 755 batch $(IROOT)$(bindir)
|
- $(INSTALL) -g root -o root -m 755 batch $(DESTDIR)$(bindir)
|
||||||
- $(INSTALL) -g root -o root -m 755 batch-job $(IROOT)$(atdatadir)
|
- $(INSTALL) -g root -o root -m 755 batch-job $(DESTDIR)$(atdatadir)
|
||||||
- $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man1dir)
|
- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man1dir)
|
||||||
- $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man5dir)
|
- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man5dir)
|
||||||
- $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man8dir)
|
- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man8dir)
|
||||||
- $(INSTALL) -g root -o root -m 755 atd $(IROOT)$(sbindir)
|
- $(INSTALL) -g root -o root -m 755 atd $(DESTDIR)$(sbindir)
|
||||||
- $(INSTALL) -g root -o root -m 755 atrun $(IROOT)$(sbindir)
|
- $(INSTALL) -g root -o root -m 755 atrun $(DESTDIR)$(sbindir)
|
||||||
- $(INSTALL) -g root -o root -m 644 at.1 $(IROOT)$(man1dir)/
|
- $(INSTALL) -g root -o root -m 644 at.1 $(DESTDIR)$(man1dir)/
|
||||||
+ $(INSTALL) -m 755 batch $(IROOT)$(bindir)
|
+ $(INSTALL) -m 755 batch $(DESTDIR)$(bindir)
|
||||||
+ $(INSTALL) -d -m 755 $(IROOT)$(man1dir)
|
+ $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir)
|
||||||
+ $(INSTALL) -d -m 755 $(IROOT)$(man5dir)
|
+ $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir)
|
||||||
+ $(INSTALL) -d -m 755 $(IROOT)$(man8dir)
|
+ $(INSTALL) -d -m 755 $(DESTDIR)$(man8dir)
|
||||||
+ $(INSTALL) -m 755 atd $(IROOT)$(sbindir)
|
+ $(INSTALL) -m 755 atd $(DESTDIR)$(sbindir)
|
||||||
+ $(INSTALL) -m 755 atrun $(IROOT)$(sbindir)
|
+ $(INSTALL) -m 755 atrun $(DESTDIR)$(sbindir)
|
||||||
+ $(INSTALL) -m 644 at.1 $(IROOT)$(man1dir)/
|
+ $(INSTALL) -m 644 at.1 $(DESTDIR)$(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
|
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 $(IROOT)$(man8dir)/
|
- $(INSTALL) -g root -o root -m 644 atd.8 $(DESTDIR)$(man8dir)/
|
||||||
+ $(INSTALL) -m 644 atd.8 $(IROOT)$(man8dir)/
|
+ $(INSTALL) -m 644 atd.8 $(DESTDIR)$(man8dir)/
|
||||||
sed "s,\$${exec_prefix},$(exec_prefix),g" <atrun.8>tmpman
|
sed "s,\$${exec_prefix},$(exec_prefix),g" <atrun.8>tmpman
|
||||||
- $(INSTALL) -g root -o root -m 644 tmpman $(IROOT)$(man8dir)/atrun.8
|
- $(INSTALL) -g root -o root -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8
|
||||||
+ $(INSTALL) -m 644 tmpman $(IROOT)$(man8dir)/atrun.8
|
+ $(INSTALL) -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8
|
||||||
rm -f tmpman
|
rm -f tmpman
|
||||||
- $(INSTALL) -g root -o root -m 644 at.allow.5 $(IROOT)$(man5dir)/
|
- $(INSTALL) -g root -o root -m 644 at.allow.5 $(DESTDIR)$(man5dir)/
|
||||||
+ $(INSTALL) -m 644 at.allow.5 $(IROOT)$(man5dir)/
|
+ $(INSTALL) -m 644 at.allow.5 $(DESTDIR)$(man5dir)/
|
||||||
cd $(IROOT)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5
|
cd $(DESTDIR)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5
|
||||||
- $(INSTALL) -g root -o root -m 644 $(DOCS) $(IROOT)$(atdocdir)
|
- $(INSTALL) -g root -o root -m 644 $(DOCS) $(DESTDIR)$(atdocdir)
|
||||||
+ $(INSTALL) -m 644 $(DOCS) $(IROOT)$(atdocdir)
|
+ $(INSTALL) -m 644 $(DOCS) $(DESTDIR)$(atdocdir)
|
||||||
rm -f $(IROOT)$(mandir)/cat1/at.1* $(IROOT)$(mandir)/cat1/batch.1* \
|
rm -f $(DESTDIR)$(mandir)/cat1/at.1* $(DESTDIR)$(mandir)/cat1/batch.1* \
|
||||||
$(IROOT)$(mandir)/cat1/atq.1*
|
$(DESTDIR)$(mandir)/cat1/atq.1*
|
||||||
rm -f $(IROOT)$(mandir)/cat1/atd.8*
|
rm -f $(DESTDIR)$(mandir)/cat1/atd.8*
|
||||||
|
|||||||
@ -17,27 +17,4 @@ diff -up at-3.1.18/atd.c.noabort at-3.1.18/atd.c
|
|||||||
else if (pid != 0) {
|
else if (pid != 0) {
|
||||||
free(mailname);
|
free(mailname);
|
||||||
free(newname);
|
free(newname);
|
||||||
@@ -669,15 +672,19 @@ run_loop()
|
|
||||||
* up.
|
|
||||||
*/
|
|
||||||
|
|
||||||
- if (stat(".", &buf) == -1)
|
|
||||||
- perr("Cannot stat " ATJOB_DIR);
|
|
||||||
+ if (stat(".", &buf) == -1) {
|
|
||||||
+ lerr("Cannot stat " ATJOB_DIR);
|
|
||||||
+ return next_job;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (nothing_to_do && buf.st_mtime <= last_chg)
|
|
||||||
return next_job;
|
|
||||||
last_chg = buf.st_mtime;
|
|
||||||
|
|
||||||
- if ((spool = opendir(".")) == NULL)
|
|
||||||
- perr("Cannot read " ATJOB_DIR);
|
|
||||||
+ if ((spool = opendir(".")) == NULL) {
|
|
||||||
+ lerr("Cannot read " ATJOB_DIR);
|
|
||||||
+ return next_job;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
run_batch = 0;
|
|
||||||
nothing_to_do = 1;
|
|
||||||
@ -29,7 +29,7 @@ diff -up at-3.1.20/at.c.pam at-3.1.20/at.c
|
|||||||
- seteuid(real_uid);
|
- seteuid(real_uid);
|
||||||
+ if ((seteuid(effective_uid)) < 0)
|
+ if ((seteuid(effective_uid)) < 0)
|
||||||
+ perr("Error in seteuid: %s", errno);
|
+ perr("Error in seteuid: %s", errno);
|
||||||
if ((fd = open(atfile, O_CREAT | O_EXCL | O_TRUNC | O_WRONLY, S_IRUSR)) == -1)
|
if ((fd = open(atfile, O_CREAT | O_EXCL | O_TRUNC | O_WRONLY | O_SYNC, S_IRUSR)) == -1)
|
||||||
perr("Cannot create atjob file %.500s", atfile);
|
perr("Cannot create atjob file %.500s", atfile);
|
||||||
- seteuid(effective_uid);
|
- seteuid(effective_uid);
|
||||||
|
|
||||||
|
|||||||
@ -1,115 +0,0 @@
|
|||||||
From 4be4813262b3b57a95a5f3ce909d30741aa3ac72 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Jan=20Stan=C4=9Bk?= <jstanek@redhat.com>
|
|
||||||
Date: Fri, 9 Apr 2021 16:47:33 +0200
|
|
||||||
Subject: [PATCH] Address issues raised by static analysis
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
Signed-off-by: Jan Staněk <jstanek@redhat.com>
|
|
||||||
---
|
|
||||||
at.c | 22 ++++++++++++++++++----
|
|
||||||
daemon.c | 21 ++++++++++++++-------
|
|
||||||
2 files changed, 32 insertions(+), 11 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/at.c b/at.c
|
|
||||||
index df55dc9..0c74e2e 100644
|
|
||||||
--- a/at.c
|
|
||||||
+++ b/at.c
|
|
||||||
@@ -545,17 +545,27 @@ writefile(time_t runtimer, char queue)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (fstat(fd, &statbuf) == -1)
|
|
||||||
+ if (fstat(fd, &statbuf) == -1) {
|
|
||||||
+ close(fd);
|
|
||||||
return;
|
|
||||||
+ }
|
|
||||||
if ((statbuf.st_uid != 0) || !S_ISREG(statbuf.st_mode) ||
|
|
||||||
- (statbuf.st_mode & (S_IWGRP | S_IWOTH)))
|
|
||||||
+ (statbuf.st_mode & (S_IWGRP | S_IWOTH))) {
|
|
||||||
+ close(fd);
|
|
||||||
return;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
fp = fdopen(fd, "r");
|
|
||||||
- if (fp == NULL)
|
|
||||||
+ if (fp == NULL) {
|
|
||||||
+ close(fd);
|
|
||||||
return;
|
|
||||||
- if (fscanf(fp, "%d", &pid) != 1)
|
|
||||||
+ }
|
|
||||||
+ if (fscanf(fp, "%d", &pid) != 1) {
|
|
||||||
+ fclose(fp);
|
|
||||||
return;
|
|
||||||
+ } else {
|
|
||||||
+ fclose(fp);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
kill_errno = 0;
|
|
||||||
|
|
||||||
@@ -640,6 +650,8 @@ list_jobs(void)
|
|
||||||
else
|
|
||||||
printf("%ld\t%s %c\n", jobno, timestr, queue);
|
|
||||||
}
|
|
||||||
+ closedir(spool);
|
|
||||||
+
|
|
||||||
PRIV_END
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -722,6 +734,8 @@ process_jobs(int argc, char **argv, int what)
|
|
||||||
putchar(ch);
|
|
||||||
}
|
|
||||||
done = 1;
|
|
||||||
+ fclose(fp);
|
|
||||||
+ fp = NULL;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
perr("Cannot open %.500s", dirent->d_name);
|
|
||||||
diff --git a/daemon.c b/daemon.c
|
|
||||||
index 4003b56..bc8191e 100644
|
|
||||||
--- a/daemon.c
|
|
||||||
+++ b/daemon.c
|
|
||||||
@@ -122,18 +122,23 @@ daemon_setup()
|
|
||||||
/* Set up standard daemon environment */
|
|
||||||
pid_t pid;
|
|
||||||
mode_t old_umask;
|
|
||||||
- int fd;
|
|
||||||
+ int fd, devnull;
|
|
||||||
FILE *fp;
|
|
||||||
|
|
||||||
if (!daemon_debug) {
|
|
||||||
- close(0);
|
|
||||||
- close(1);
|
|
||||||
- close(2);
|
|
||||||
- if ((open("/dev/null", O_RDWR) != 0) ||
|
|
||||||
- (open("/dev/null", O_RDWR) != 1) ||
|
|
||||||
- (open("/dev/null", O_RDWR) != 2)) {
|
|
||||||
+ devnull = open("/dev/null", O_RDWR);
|
|
||||||
+ if (devnull == -1) {
|
|
||||||
perr("Error redirecting I/O");
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ if ((dup2(devnull, 0) == -1) ||
|
|
||||||
+ (dup2(devnull, 1) == -1) ||
|
|
||||||
+ (dup2(devnull, 2) == -1)) {
|
|
||||||
+ close(devnull);
|
|
||||||
+ perr("Error redirecting I/O");
|
|
||||||
+ } else {
|
|
||||||
+ close(devnull);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
if (daemon_foreground)
|
|
||||||
@@ -208,6 +213,8 @@ daemon_setup()
|
|
||||||
fcntl(fd, F_SETFD, FD_CLOEXEC);
|
|
||||||
PRIV_END
|
|
||||||
|
|
||||||
+ /* See the above comment. */
|
|
||||||
+ /* coverity[leaked_storage: FALSE] */
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.31.1
|
|
||||||
|
|
||||||
44
at.spec
44
at.spec
@ -1,6 +1,6 @@
|
|||||||
Name: at
|
Name: at
|
||||||
Version: 3.2.2
|
Version: 3.2.5
|
||||||
Release: 3
|
Release: 1
|
||||||
Summary: A job manager
|
Summary: A job manager
|
||||||
License: GPLv3+, GPLv2+, ISC, MIT, Public Domain
|
License: GPLv3+, GPLv2+, ISC, MIT, Public Domain
|
||||||
URL: http://ftp.debian.org/debian/pool/main/a/at
|
URL: http://ftp.debian.org/debian/pool/main/a/at
|
||||||
@ -17,15 +17,13 @@ Patch4: at-3.1.20-shell.patch
|
|||||||
Patch5: at-3.1.18-nitpicks.patch
|
Patch5: at-3.1.18-nitpicks.patch
|
||||||
Patch6: at-3.1.14-fix_no_export.patch
|
Patch6: at-3.1.14-fix_no_export.patch
|
||||||
Patch7: at-3.1.14-mailwithhostname.patch
|
Patch7: at-3.1.14-mailwithhostname.patch
|
||||||
Patch8: at-3.1.14-usePOSIXtimers.patch
|
Patch8: at-3.1.20-aborted-jobs.patch
|
||||||
Patch9: at-3.1.20-aborted-jobs.patch
|
Patch9: at-3.1.18-noabort.patch
|
||||||
Patch10: at-3.1.18-noabort.patch
|
Patch10: at-3.1.16-fclose-error.patch
|
||||||
Patch11: at-3.1.16-fclose-error.patch
|
Patch11: at-3.1.16-clear-nonjobs.patch
|
||||||
Patch12: at-3.1.16-clear-nonjobs.patch
|
Patch12: at-3.1.20-lock-locks.patch
|
||||||
Patch13: at-3.1.20-lock-locks.patch
|
Patch13: at-3.1.23-document-n.patch
|
||||||
Patch14: at-3.1.23-document-n.patch
|
Patch14: at-3.1.20-log-jobs.patch
|
||||||
Patch15: at-3.1.20-log-jobs.patch
|
|
||||||
Patch16: at-3.1.23-coverity-fix.patch
|
|
||||||
|
|
||||||
BuildRequires: gcc flex flex-static bison pam-devel smtpdaemon libffi
|
BuildRequires: gcc flex flex-static bison pam-devel smtpdaemon libffi
|
||||||
BuildRequires: autoconf libselinux-devel >= 1.27.9 perl(Test::Harness) perl(Test::More)
|
BuildRequires: autoconf libselinux-devel >= 1.27.9 perl(Test::Harness) perl(Test::More)
|
||||||
@ -59,15 +57,15 @@ make install \
|
|||||||
DAEMON_USERNAME=`id -nu`\
|
DAEMON_USERNAME=`id -nu`\
|
||||||
DAEMON_GROUPNAME=`id -ng` \
|
DAEMON_GROUPNAME=`id -ng` \
|
||||||
DESTDIR=$RPM_BUILD_ROOT\
|
DESTDIR=$RPM_BUILD_ROOT\
|
||||||
sbindir=$RPM_BUILD_ROOT%{_prefix}/sbin\
|
sbindir=%{_prefix}/sbin\
|
||||||
bindir=$RPM_BUILD_ROOT%{_bindir}\
|
bindir=%{_bindir}\
|
||||||
prefix=$RPM_BUILD_ROOT%{_prefix}\
|
prefix=%{_prefix}\
|
||||||
exec_prefix=$RPM_BUILD_ROOT%{_prefix}\
|
exec_prefix=%{_prefix}\
|
||||||
docdir=$RPM_BUILD_ROOT/usr/doc\
|
docdir=/usr/doc\
|
||||||
mandir=$RPM_BUILD_ROOT%{_mandir}\
|
mandir=%{_mandir}\
|
||||||
etcdir=$RPM_BUILD_ROOT%{_sysconfdir} \
|
etcdir=%{_sysconfdir} \
|
||||||
ATJOB_DIR=$RPM_BUILD_ROOT%{_localstatedir}/spool/at \
|
ATJOB_DIR=%{_localstatedir}/spool/at \
|
||||||
ATSPOOL_DIR=$RPM_BUILD_ROOT%{_localstatedir}/spool/at/spool \
|
ATSPOOL_DIR=%{_localstatedir}/spool/at/spool \
|
||||||
INSTALL_ROOT_USER=`id -nu` \
|
INSTALL_ROOT_USER=`id -nu` \
|
||||||
INSTALL_ROOT_GROUP=`id -nu`;
|
INSTALL_ROOT_GROUP=`id -nu`;
|
||||||
|
|
||||||
@ -124,6 +122,12 @@ chown root:root %{_localstatedir}/spool/at/.SEQ
|
|||||||
%{_mandir}/man*/*
|
%{_mandir}/man*/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Dec 27 2022 zhangnan <zhangnan134@huawei.com> - 3.2.5-1
|
||||||
|
- Type:enhancement
|
||||||
|
- ID:NA
|
||||||
|
- SUG:NA
|
||||||
|
- DESC:update to 3.2.5
|
||||||
|
|
||||||
* Wed Nov 23 2022 fuanan <fuanan3@h-partners.com> - 3.2.2-3
|
* Wed Nov 23 2022 fuanan <fuanan3@h-partners.com> - 3.2.2-3
|
||||||
- Type:bugfix
|
- Type:bugfix
|
||||||
- ID:NA
|
- ID:NA
|
||||||
|
|||||||
Binary file not shown.
BIN
at_3.2.5.orig.tar.gz
Normal file
BIN
at_3.2.5.orig.tar.gz
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user