Gitweb:
https://git.exim.org/exim.git/commitdiff/c85879f8174a658ddac9524d078b2a717f964710
Commit: c85879f8174a658ddac9524d078b2a717f964710
Parent: 130212d30d47e588c2bc03edcfce11bf3857da03
Author: Jeremy Harris <jgh146exb@???>
AuthorDate: Tue Mar 17 12:33:47 2020 +0000
Committer: Jeremy Harris <jgh146exb@???>
CommitDate: Tue Mar 17 20:09:25 2020 +0000
Avoid corrupting globals during time-pauses
---
src/src/exim.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/src/exim.c b/src/src/exim.c
index 4e4b6bb..5e2f437 100644
--- a/src/src/exim.c
+++ b/src/src/exim.c
@@ -309,6 +309,7 @@ milliwait(struct itimerval *itval)
{
sigset_t sigmask;
sigset_t old_sigmask;
+int save_errno = errno;
if (itval->it_value.tv_usec < 50 && itval->it_value.tv_sec == 0)
return;
@@ -322,6 +323,8 @@ if (setitimer(ITIMER_REAL, itval, NULL) < 0) /* Start timer */
(void)sigdelset(&sigmask, SIGALRM); /* Remove SIGALRM */
(void)sigsuspend(&sigmask); /* Until SIGALRM */
(void)sigprocmask(SIG_SETMASK, &old_sigmask, NULL); /* Restore mask */
+errno = save_errno;
+sigalrm_seen = FALSE;
}